diff --git a/util/gitutil/gitutil.go b/util/gitutil/gitutil.go index cca79f9001f4..97615be61b41 100644 --- a/util/gitutil/gitutil.go +++ b/util/gitutil/gitutil.go @@ -101,11 +101,11 @@ func (c *Git) RemoteURL() (string, error) { } func (c *Git) FullCommit() (string, error) { - return c.clean(c.run("show", "--format=%H", "HEAD", "--quiet", "--")) + return c.clean(c.run("rev-parse", "HEAD")) } func (c *Git) ShortCommit() (string, error) { - return c.clean(c.run("show", "--format=%h", "HEAD", "--quiet", "--")) + return c.clean(c.run("rev-parse", "--short", "HEAD")) } func (c *Git) Tag() (string, error) { @@ -185,8 +185,11 @@ func IsUnknownRevision(err error) bool { return false } // https://github.com/git/git/blob/a6a323b31e2bcbac2518bddec71ea7ad558870eb/setup.c#L204 + // https://github.com/git/git/blob/1adf5bca8c3cf778103548b9355777cf2d12efdd/builtin/rev-parse.c#L585 errMsg := strings.ToLower(err.Error()) - return strings.Contains(errMsg, "unknown revision or path not in the working tree") || strings.Contains(errMsg, "bad revision") + return strings.Contains(errMsg, "unknown revision or path not in the working tree") || + strings.Contains(errMsg, "bad revision") || + strings.Contains(errMsg, "needed a single revision") } // stripCredentials takes a URL and strips username and password from it. diff --git a/util/gitutil/gitutil_test.go b/util/gitutil/gitutil_test.go index 8a21b25ef1e7..56ad50f621d3 100644 --- a/util/gitutil/gitutil_test.go +++ b/util/gitutil/gitutil_test.go @@ -62,7 +62,7 @@ func TestGitFullCommitErr(t *testing.T) { _, err = c.FullCommit() require.Error(t, err) require.True(t, gitutil.IsUnknownRevision(err)) - require.False(t, gittestutil.IsAmbiguousArgument(err)) + require.True(t, gittestutil.IsAmbiguousArgument(err)) } func TestGitShortCommitErr(t *testing.T) {