From 63e5bf6ef7604b542fa77d48d2b70f400cc87a81 Mon Sep 17 00:00:00 2001 From: zeripath Date: Tue, 28 Jul 2020 15:11:05 +0100 Subject: [PATCH] Only use --exclude on name-rev with git >= 2.13 (#12347) Fix #11917 Signed-off-by: Andrew Thornton --- modules/git/commit.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/git/commit.go b/modules/git/commit.go index b8ff99cdb64..3506b8efe4d 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") {