1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-08-06 22:33:07 +02:00

Fix branch head icon appearing at head commit when a remote or tag exists with the same name as the current branch (#4669)

- **PR Description**

Fix the problem that if the `rebase.updateRefs` git config is on, a
branch icon would appear in the commits list for the head commit as soon
as a remote or tag exists whose name is the same as the name of the
current branch.
This commit is contained in:
Stefan Haller
2025-06-30 16:12:09 +02:00
committed by GitHub
4 changed files with 43 additions and 9 deletions

View File

@ -102,19 +102,18 @@ func (self *BranchCommands) CurrentBranchInfo() (BranchInfo, error) {
}, nil }, nil
} }
// CurrentBranchName get name of current branch // CurrentBranchName get name of current branch. Returns empty string if HEAD is detached.
func (self *BranchCommands) CurrentBranchName() (string, error) { func (self *BranchCommands) CurrentBranchName() (string, error) {
cmdArgs := NewGitCmd("rev-parse"). cmdArgs := NewGitCmd("branch").
Arg("--abbrev-ref"). Arg("--show-current").
Arg("--verify").
Arg("HEAD").
ToArgv() ToArgv()
output, err := self.cmd.New(cmdArgs).DontLog().RunWithOutput() output, err := self.cmd.New(cmdArgs).DontLog().RunWithOutput()
if err == nil { if err != nil {
return strings.TrimSpace(output), nil
}
return "", err return "", err
}
return strings.TrimSpace(output), nil
} }
// LocalDelete delete branch locally // LocalDelete delete branch locally

View File

@ -308,7 +308,7 @@ func (self *RefreshHelper) determineCheckedOutBranchName() string {
// In all other cases, get the branch name by asking git what branch is // In all other cases, get the branch name by asking git what branch is
// checked out. Note that if we're on a detached head (for reasons other // checked out. Note that if we're on a detached head (for reasons other
// than rebasing or bisecting, i.e. it was explicitly checked out), then // than rebasing or bisecting, i.e. it was explicitly checked out), then
// this will return its hash. // this will return an empty string.
if branchName, err := self.c.Git().Branch.CurrentBranchName(); err == nil { if branchName, err := self.c.Git().Branch.CurrentBranchName(); err == nil {
return branchName return branchName
} }

View File

@ -0,0 +1,34 @@
package commit
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var DoNotShowBranchMarkerForHeadCommit = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Verify that no branch heads are shown for the branch head if there is a tag with the same name as the branch",
ExtraCmdArgs: []string{},
Skip: false,
GitVersion: AtLeast("2.38.0"),
SetupConfig: func(config *config.AppConfig) {
config.GetAppState().GitLogShowGraph = "never"
},
SetupRepo: func(shell *Shell) {
shell.EmptyCommit("one")
shell.NewBranch("branch1")
shell.EmptyCommit("two")
shell.EmptyCommit("three")
shell.CreateLightweightTag("branch1", "master")
shell.SetConfig("rebase.updateRefs", "true")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
// Check that the local commits view does show a branch marker for the head commit
t.Views().Commits().
Lines(
Contains("CI three"),
Contains("CI two"),
Contains("CI branch1 one"),
)
},
})

View File

@ -118,6 +118,7 @@ var tests = []*components.IntegrationTest{
commit.CreateTag, commit.CreateTag,
commit.DisableCopyCommitMessageBody, commit.DisableCopyCommitMessageBody,
commit.DiscardOldFileChanges, commit.DiscardOldFileChanges,
commit.DoNotShowBranchMarkerForHeadCommit,
commit.FailHooksThenCommitNoHooks, commit.FailHooksThenCommitNoHooks,
commit.FindBaseCommitForFixup, commit.FindBaseCommitForFixup,
commit.FindBaseCommitForFixupDisregardMainBranch, commit.FindBaseCommitForFixupDisregardMainBranch,