Skip to content

Commit 661af29

Browse files
committed
build: check reachable git commits
Signed-off-by: CrazyMax <[email protected]> (cherry picked from commit fd58841)
1 parent 02cf539 commit 661af29

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

build/git.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func getGitAttributes(ctx context.Context, contextPath string, dockerfilePath st
6464
return res, nil
6565
}
6666

67-
if sha, err := gitc.FullCommit(); err != nil {
67+
if sha, err := gitc.FullCommit(); err != nil && !gitutil.IsUnknownRevision(err) {
6868
return res, errors.Wrapf(err, "buildx: failed to get git commit")
6969
} else if sha != "" {
7070
if gitc.IsDirty() {

util/gitutil/gitutil.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,12 @@ func (c *Git) clean(out string, err error) (string, error) {
138138
}
139139
return out, err
140140
}
141+
142+
func IsUnknownRevision(err error) bool {
143+
if err == nil {
144+
return false
145+
}
146+
// https://github.com/git/git/blob/a6a323b31e2bcbac2518bddec71ea7ad558870eb/setup.c#L204
147+
errMsg := strings.ToLower(err.Error())
148+
return strings.Contains(errMsg, "unknown revision or path not in the working tree") || strings.Contains(errMsg, "bad revision")
149+
}

util/gitutil/gitutil_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,18 @@ func TestGitShortCommit(t *testing.T) {
4646
require.Equal(t, 7, len(out))
4747
}
4848

49+
func TestGitFullCommitErr(t *testing.T) {
50+
Mktmp(t)
51+
c, err := New()
52+
require.NoError(t, err)
53+
54+
GitInit(c, t)
55+
56+
_, err = c.FullCommit()
57+
require.Error(t, err)
58+
require.True(t, IsUnknownRevision(err))
59+
}
60+
4961
func TestGitTagsPointsAt(t *testing.T) {
5062
Mktmp(t)
5163
c, err := New()

0 commit comments

Comments
 (0)