1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-02 22:25:47 +02:00

Only show worktree in status panel if not the main worktree and worktrees are supported

This commit is contained in:
Jesse Duffield 2023-07-17 14:10:07 +10:00
parent 3cd2d6fa5c
commit a06a5cadee
3 changed files with 26 additions and 5 deletions

View File

@ -632,8 +632,12 @@ func (self *RefreshHelper) refreshStatus() {
}
workingTreeState := self.c.Git().Status.WorkingTreeState()
mainWorktreeName := self.worktreeHelper.GetMainWorktreeName()
status := presentation.FormatStatus(currentBranch, mainWorktreeName, workingTreeState, self.c.Tr)
var linkedWorktreeName string
if self.c.Git().Version.SupportsWorktrees() {
linkedWorktreeName = self.worktreeHelper.GetLinkedWorktreeName()
}
status := presentation.FormatStatus(currentBranch, linkedWorktreeName, workingTreeState, self.c.Tr)
self.c.SetViewContent(self.c.Views().Status, status)
}

View File

@ -45,6 +45,22 @@ func (self *WorktreeHelper) GetMainWorktreeName() string {
return ""
}
// If we're on the main worktree, we return an empty string
func (self *WorktreeHelper) GetLinkedWorktreeName() string {
worktrees := self.c.Model().Worktrees
if len(worktrees) == 0 {
return ""
}
// worktrees always have the current worktree on top
currentWorktree := worktrees[0]
if currentWorktree.Main() {
return ""
}
return currentWorktree.Name()
}
func (self *WorktreeHelper) IsCurrentWorktree(w *models.Worktree) bool {
pwd, err := os.Getwd()
if err != nil {

View File

@ -10,7 +10,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/utils"
)
func FormatStatus(currentBranch *models.Branch, mainWorktreeName string, workingTreeState enums.RebaseMode, tr *i18n.TranslationSet) string {
func FormatStatus(currentBranch *models.Branch, linkedWorktreeName string, workingTreeState enums.RebaseMode, tr *i18n.TranslationSet) string {
status := ""
if currentBranch.IsRealBranch() {
@ -23,8 +23,9 @@ func FormatStatus(currentBranch *models.Branch, mainWorktreeName string, working
name := GetBranchTextStyle(currentBranch.Name).Sprint(currentBranch.Name)
repoName := utils.GetCurrentRepoName()
if repoName != mainWorktreeName {
repoName = fmt.Sprintf("%s(%s)", mainWorktreeName, style.FgCyan.Sprint(repoName))
// If the user is in a linked worktree (i.e. not the main worktree) we'll display that
if linkedWorktreeName != "" {
repoName = fmt.Sprintf("%s(%s)", repoName, style.FgCyan.Sprint(linkedWorktreeName))
}
status += fmt.Sprintf("%s → %s ", repoName, name)