1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-08-09 09:22:48 +03:00

Style missing worktree as red and display better error when trying to switch to them

Use a broken link icon for missing worktrees
This commit is contained in:
Joel Baranick
2022-09-02 09:35:08 -07:00
committed by Jesse Duffield
parent 9a79154d05
commit c679fd1924
10 changed files with 103 additions and 85 deletions

View File

@@ -638,16 +638,13 @@ func (self *RefreshHelper) refreshStatus() {
}
name := presentation.GetBranchTextStyle(currentBranch.Name).Sprint(currentBranch.Name)
var repoName string
worktreeName := self.worktreeHelper.GetCurrentWorktreeName()
if len(worktreeName) > 0 {
worktreeName = fmt.Sprintf("[%s]", worktreeName)
repoName = self.worktreeHelper.GetMainWorktreeName()
} else {
repoName = utils.GetCurrentRepoName()
repoName = utils.GetCurrentRepoName()
mainWorktreeName := self.worktreeHelper.GetMainWorktreeName()
if repoName != mainWorktreeName {
repoName = fmt.Sprintf("%s(%s)", mainWorktreeName, style.FgBlue.Sprint(repoName))
}
status += fmt.Sprintf("%s%s → %s ", repoName, worktreeName, name)
status += fmt.Sprintf("%s → %s ", repoName, name)
self.c.SetViewContent(self.c.Views().Status, status)
}

View File

@@ -138,6 +138,10 @@ func (self *ReposHelper) CreateRecentReposMenu() error {
}
func (self *ReposHelper) DispatchSwitchToRepo(path string, reuse bool) error {
return self.DispatchSwitchTo(path, reuse, self.c.Tr.ErrRepositoryMovedOrDeleted)
}
func (self *ReposHelper) DispatchSwitchTo(path string, reuse bool, errMsg string) error {
env.UnsetGitDirEnvs()
originalPath, err := os.Getwd()
if err != nil {
@@ -146,7 +150,7 @@ func (self *ReposHelper) DispatchSwitchToRepo(path string, reuse bool) error {
if err := os.Chdir(path); err != nil {
if os.IsNotExist(err) {
return self.c.ErrorMsg(self.c.Tr.ErrRepositoryMovedOrDeleted)
return self.c.ErrorMsg(errMsg)
}
return err
}

View File

@@ -1,9 +1,5 @@
package helpers
import (
"path/filepath"
)
type IWorktreeHelper interface {
GetMainWorktreeName() string
GetCurrentWorktreeName() string
@@ -21,23 +17,23 @@ func NewWorktreeHelper(c *HelperCommon) *WorktreeHelper {
func (self *WorktreeHelper) GetMainWorktreeName() string {
for _, worktree := range self.c.Model().Worktrees {
if worktree.Main {
return filepath.Base(worktree.Path)
if worktree.Main() {
return worktree.Name()
}
}
return ""
}
func (self *WorktreeHelper) GetCurrentWorktreeName() string {
for _, worktree := range self.c.Model().Worktrees {
if worktree.Current {
if worktree.Main {
return ""
}
return worktree.Name
}
}
return ""
}
//func (self *WorktreeHelper) GetCurrentWorktreeName() string {
// for _, worktree := range self.c.Model().Worktrees {
// if worktree.Current() {
// if worktree.Main() {
// return ""
// }
// return worktree.Name()
// }
// }
//
// return ""
//}

View File

@@ -2,7 +2,6 @@ package controllers
import (
"fmt"
"os"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/context"
@@ -56,7 +55,11 @@ func (self *WorktreesController) GetOnRenderToMain() func() error {
if worktree == nil {
task = types.NewRenderStringTask("No worktrees")
} else {
task = types.NewRenderStringTask(fmt.Sprintf("%s\nPath: %s", style.FgGreen.Sprint(worktree.Name), worktree.Path))
missing := ""
if worktree.Missing() {
missing = style.FgRed.Sprint(" (missing)")
}
task = types.NewRenderStringTask(fmt.Sprintf("%s\nPath: %s%s", style.FgGreen.Sprint(worktree.Name()), worktree.Path, missing))
}
return self.c.RenderToMainViews(types.RefreshMainOpts{
@@ -86,11 +89,11 @@ func (self *WorktreesController) GetOnRenderToMain() func() error {
//}
func (self *WorktreesController) delete(worktree *models.Worktree) error {
if worktree.Main {
if worktree.Main() {
return self.c.ErrorMsg(self.c.Tr.CantDeleteMainWorktree)
}
if worktree.Current {
if worktree.Current() {
return self.c.ErrorMsg(self.c.Tr.CantDeleteCurrentWorktree)
}
@@ -108,7 +111,7 @@ func (self *WorktreesController) deleteWithForce(worktree *models.Worktree, forc
message := utils.ResolvePlaceholderString(
templateStr,
map[string]string{
"worktreeName": worktree.Name,
"worktreeName": worktree.Name(),
},
)
@@ -170,14 +173,11 @@ func (self *WorktreesController) GetOnClick() func() error {
}
func (self *WorktreesController) enter(worktree *models.Worktree) error {
wd, err := os.Getwd()
if err != nil {
return err
}
// if we were in a submodule, we want to forget about that stack of repos
// so that hitting escape in the new repo does nothing
self.c.State().GetRepoPathStack().Clear()
self.c.State().GetRepoPathStack().Push(wd)
return self.c.Helpers().Repos.DispatchSwitchToRepo(worktree.Path, true)
return self.c.Helpers().Repos.DispatchSwitchTo(worktree.Path, true, self.c.Tr.ErrWorktreeMovedOrDeleted)
}
func (self *WorktreesController) checkSelected(callback func(worktree *models.Worktree) error) func() error {