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:
committed by
Jesse Duffield
parent
9a79154d05
commit
c679fd1924
@@ -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)
|
||||
}
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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 ""
|
||||
//}
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user