Only use --exclude on name-rev with git >= 2.13 (#12347)

Fix #11917

Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
zeripath 2020-07-28 15:11:05 +01:00 committed by GitHub
parent 8bdc9795d8
commit 63e5bf6ef7
Signed by: GitHub
GPG Key ID: 4AEE18F83AFDEB23

@ -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") {