diff --git a/modules/git/commit.go b/modules/git/commit.go index b8ff99cdb..3506b8efe 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -21,6 +21,7 @@ import ( "strings" "github.com/go-git/go-git/v5/plumbing/object" + "github.com/mcuadros/go-version" ) // Commit represents a git commit. @@ -468,7 +469,20 @@ func (c *Commit) GetSubModule(entryname string) (*SubModule, error) { // GetBranchName gets the closest branch name (as returned by 'git name-rev --name-only') func (c *Commit) GetBranchName() (string, error) { - data, err := NewCommand("name-rev", "--exclude", "refs/tags/*", "--name-only", "--no-undefined", c.ID.String()).RunInDir(c.repo.Path) + binVersion, err := BinVersion() + if err != nil { + return "", fmt.Errorf("Git version missing: %v", err) + } + + args := []string{ + "name-rev", + } + if version.Compare(binVersion, "2.13.0", ">=") { + args = append(args, "--exclude", "refs/tags/*") + } + args = append(args, "--name-only", "--no-undefined", c.ID.String()) + + data, err := NewCommand(args...).RunInDir(c.repo.Path) if err != nil { // handle special case where git can not describe commit if strings.Contains(err.Error(), "cannot describe") {