Skip to content

Commit 5f66b71

Browse files
committed
gitutil: migrate to BuildKit GitCLI API
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent 3124b3c commit 5f66b71

10 files changed

Lines changed: 131 additions & 171 deletions

File tree

build/git.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/docker/buildx/util/gitutil"
1313
"github.com/docker/buildx/util/osutil"
1414
"github.com/moby/buildkit/client"
15+
bkgitutil "github.com/moby/buildkit/util/gitutil"
1516
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
1617
"github.com/pkg/errors"
1718
)
@@ -61,29 +62,30 @@ func getGitAttributes(ctx context.Context, contextPath, dockerfilePath string) (
6162
}
6263
wd = osutil.SanitizePath(wd)
6364

64-
gitc, err := gitutil.New(gitutil.WithContext(ctx), gitutil.WithWorkingDir(wd))
65+
gitc, err := gitutil.New(bkgitutil.WithDir(wd))
6566
if err != nil {
6667
if st, err1 := os.Stat(path.Join(wd, ".git")); err1 == nil && st.IsDir() {
6768
return nil, errors.Wrap(err, "git was not found in the system")
6869
}
6970
return nil, nil
7071
}
7172

72-
if !gitc.IsInsideWorkTree() {
73+
if !gitc.IsInsideWorkTree(ctx) {
7374
if st, err := os.Stat(path.Join(wd, ".git")); err == nil && st.IsDir() {
7475
return nil, errors.New("failed to read current commit information with git rev-parse --is-inside-work-tree")
7576
}
7677
return nil, nil
7778
}
7879

79-
root, err := gitc.RootDir()
80+
root, err := gitc.WorkTree(ctx)
8081
if err != nil {
8182
return nil, errors.Wrap(err, "failed to get git root dir")
8283
}
84+
root = osutil.SanitizePath(root)
8385

8486
res := make(map[string]string)
8587

86-
if sha, err := gitc.FullCommit(); err != nil && !gitutil.IsUnknownRevision(err) {
88+
if sha, err := gitc.FullCommit(ctx); err != nil && !gitutil.IsUnknownRevision(err) {
8789
return nil, errors.Wrap(err, "failed to get git commit")
8890
} else if sha != "" {
8991
checkDirty := false
@@ -92,7 +94,7 @@ func getGitAttributes(ctx context.Context, contextPath, dockerfilePath string) (
9294
checkDirty = v
9395
}
9496
}
95-
if checkDirty && gitc.IsDirty() {
97+
if checkDirty && gitc.IsDirty(ctx) {
9698
sha += "-dirty"
9799
}
98100
if setGitLabels {
@@ -103,7 +105,7 @@ func getGitAttributes(ctx context.Context, contextPath, dockerfilePath string) (
103105
}
104106
}
105107

106-
if rurl, err := gitc.RemoteURL(); err == nil && rurl != "" {
108+
if rurl, err := gitc.RemoteURL(ctx); err == nil && rurl != "" {
107109
if setGitLabels {
108110
res["label:"+ocispecs.AnnotationSource] = rurl
109111
}

commands/history/ls.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/docker/cli/cli/command"
2121
"github.com/docker/cli/cli/command/formatter"
2222
"github.com/docker/go-units"
23+
bkgitutil "github.com/moby/buildkit/util/gitutil"
2324
"github.com/pkg/errors"
2425
"github.com/spf13/cobra"
2526
)
@@ -59,14 +60,14 @@ func runLs(ctx context.Context, dockerCli command.Cli, opts lsOptions) error {
5960
if err != nil {
6061
return err
6162
}
62-
gitc, err := gitutil.New(gitutil.WithContext(ctx), gitutil.WithWorkingDir(wd))
63+
gitc, err := gitutil.New(bkgitutil.WithDir(wd))
6364
if err != nil {
6465
if st, err1 := os.Stat(path.Join(wd, ".git")); err1 == nil && st.IsDir() {
6566
return errors.Wrap(err, "git was not found in the system")
6667
}
6768
return errors.Wrapf(err, "could not find git repository for local filter")
6869
}
69-
remote, err := gitc.RemoteURL()
70+
remote, err := gitc.RemoteURL(ctx)
7071
if err != nil {
7172
return errors.Wrapf(err, "could not get remote URL for local filter")
7273
}

tests/bake.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/moby/buildkit/identity"
2424
provenancetypes "github.com/moby/buildkit/solver/llbsolver/provenance/types"
2525
"github.com/moby/buildkit/util/contentutil"
26+
bkgitutil "github.com/moby/buildkit/util/gitutil"
2627
"github.com/moby/buildkit/util/testutil"
2728
"github.com/moby/buildkit/util/testutil/integration"
2829
"github.com/pkg/errors"
@@ -551,7 +552,7 @@ COPY super-cool.txt /
551552
fstest.CreateFile("bar/super-cool.txt", []byte("super cool"), 0600),
552553
)
553554

554-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
555+
git, err := gitutil.New(bkgitutil.WithDir(dir))
555556
require.NoError(t, err)
556557
gittestutil.GitInit(git, t)
557558
gittestutil.GitAdd(git, t, "docker-bake.hcl", "bar")
@@ -688,7 +689,7 @@ EOT
688689
)
689690
dirDest := t.TempDir()
690691

691-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
692+
git, err := gitutil.New(bkgitutil.WithDir(dir))
692693
require.NoError(t, err)
693694

694695
gittestutil.GitInit(git, t)
@@ -718,7 +719,7 @@ EOT
718719
)
719720
dirDest := t.TempDir()
720721

721-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
722+
git, err := gitutil.New(bkgitutil.WithDir(dir))
722723
require.NoError(t, err)
723724

724725
gittestutil.GitInit(git, t)
@@ -765,7 +766,7 @@ EOT
765766
)
766767
dirDest := t.TempDir()
767768

768-
git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
769+
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
769770
require.NoError(t, err)
770771

771772
gittestutil.GitInit(git, t)
@@ -834,7 +835,7 @@ EOT
834835
)
835836
dirDest := t.TempDir()
836837

837-
git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
838+
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
838839
require.NoError(t, err)
839840

840841
gittestutil.GitInit(git, t)
@@ -868,14 +869,14 @@ EOT
868869
)
869870
dirDest := t.TempDir()
870871

871-
gitSpec, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
872+
gitSpec, err := gitutil.New(bkgitutil.WithDir(dirSpec))
872873
require.NoError(t, err)
873874
gittestutil.GitInit(gitSpec, t)
874875
gittestutil.GitAdd(gitSpec, t, "docker-bake.hcl")
875876
gittestutil.GitCommit(gitSpec, t, "initial commit")
876877
addrSpec := gittestutil.GitServeHTTP(gitSpec, t)
877878

878-
gitSrc, err := gitutil.New(gitutil.WithWorkingDir(dirSrc))
879+
gitSrc, err := gitutil.New(bkgitutil.WithDir(dirSrc))
879880
require.NoError(t, err)
880881
gittestutil.GitInit(gitSrc, t)
881882
gittestutil.GitAdd(gitSrc, t, "foo")
@@ -909,7 +910,7 @@ COPY super-cool.txt /
909910
)
910911
dirDest := t.TempDir()
911912

912-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
913+
git, err := gitutil.New(bkgitutil.WithDir(dir))
913914
require.NoError(t, err)
914915
gittestutil.GitInit(git, t)
915916
gittestutil.GitAdd(git, t, "docker-bake.hcl", "bar")
@@ -948,7 +949,7 @@ COPY --from=files file.txt /file.txt
948949
)
949950
dirDest := t.TempDir()
950951

951-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
952+
git, err := gitutil.New(bkgitutil.WithDir(dir))
952953
require.NoError(t, err)
953954
gittestutil.GitInit(git, t)
954955
gittestutil.GitAdd(git, t, "docker-bake.hcl", "build", "files-src")
@@ -984,7 +985,7 @@ COPY --from=files marker.txt /marker.txt
984985
)
985986
dirDest := t.TempDir()
986987

987-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
988+
git, err := gitutil.New(bkgitutil.WithDir(dir))
988989
require.NoError(t, err)
989990
gittestutil.GitInit(git, t)
990991
gittestutil.GitAdd(git, t, "docker-bake.hcl", "build", "marker.txt")
@@ -1023,7 +1024,7 @@ EOT
10231024
)
10241025
dirDest := t.TempDir()
10251026

1026-
git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
1027+
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
10271028
require.NoError(t, err)
10281029

10291030
gittestutil.GitInit(git, t)
@@ -1071,7 +1072,7 @@ EOT
10711072
)
10721073
dirDest := t.TempDir()
10731074

1074-
git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
1075+
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
10751076
require.NoError(t, err)
10761077

10771078
gittestutil.GitInit(git, t)
@@ -1127,7 +1128,7 @@ COPY foo /foo
11271128
)
11281129
dirDest := t.TempDir()
11291130

1130-
git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
1131+
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
11311132
require.NoError(t, err)
11321133

11331134
gittestutil.GitInit(git, t)
@@ -1179,7 +1180,7 @@ COPY foo /foo
11791180
fstest.CreateFile("foo", []byte("foo"), 0600),
11801181
)
11811182

1182-
git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
1183+
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
11831184
require.NoError(t, err)
11841185

11851186
gittestutil.GitInit(git, t)

tests/build.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
provenancetypes "github.com/moby/buildkit/solver/llbsolver/provenance/types"
2929
"github.com/moby/buildkit/util/appdefaults"
3030
"github.com/moby/buildkit/util/contentutil"
31+
bkgitutil "github.com/moby/buildkit/util/gitutil"
3132
"github.com/moby/buildkit/util/testutil"
3233
"github.com/moby/buildkit/util/testutil/integration"
3334
"github.com/opencontainers/go-digest"
@@ -130,7 +131,7 @@ COPY foo /foo
130131
)
131132
dirDest := t.TempDir()
132133

133-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
134+
git, err := gitutil.New(bkgitutil.WithDir(dir))
134135
require.NoError(t, err)
135136

136137
gittestutil.GitInit(git, t)
@@ -155,7 +156,7 @@ COPY foo /foo
155156
)
156157
dirDest := t.TempDir()
157158

158-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
159+
git, err := gitutil.New(bkgitutil.WithDir(dir))
159160
require.NoError(t, err)
160161

161162
gittestutil.GitInit(git, t)
@@ -182,7 +183,7 @@ COPY foo /foo
182183
)
183184
dirDest := t.TempDir()
184185

185-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
186+
git, err := gitutil.New(bkgitutil.WithDir(dir))
186187
require.NoError(t, err)
187188

188189
gittestutil.GitInit(git, t)
@@ -215,7 +216,7 @@ COPY foo /foo
215216
)
216217
dirDest := t.TempDir()
217218

218-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
219+
git, err := gitutil.New(bkgitutil.WithDir(dir))
219220
require.NoError(t, err)
220221

221222
gittestutil.GitInit(git, t)
@@ -248,7 +249,7 @@ COPY foo /foo
248249
)
249250
dirDest := t.TempDir()
250251

251-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
252+
git, err := gitutil.New(bkgitutil.WithDir(dir))
252253
require.NoError(t, err)
253254

254255
gittestutil.GitInit(git, t)
@@ -281,7 +282,7 @@ COPY foo /foo
281282
)
282283
dirDest := t.TempDir()
283284

284-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
285+
git, err := gitutil.New(bkgitutil.WithDir(dir))
285286
require.NoError(t, err)
286287

287288
gittestutil.GitInit(git, t)
@@ -403,7 +404,7 @@ COPY foo /foo
403404
)
404405
dirDest := t.TempDir()
405406

406-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
407+
git, err := gitutil.New(bkgitutil.WithDir(dir))
407408
require.NoError(t, err)
408409

409410
gittestutil.GitInit(git, t)

tests/history.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/containerd/continuity/fs/fstest"
1313
"github.com/docker/buildx/util/gitutil"
1414
"github.com/docker/buildx/util/gitutil/gittestutil"
15+
bkgitutil "github.com/moby/buildkit/util/gitutil"
1516
"github.com/moby/buildkit/util/testutil/integration"
1617
"github.com/stretchr/testify/require"
1718
)
@@ -196,7 +197,7 @@ COPY foo /foo
196197
)
197198
dirDest := t.TempDir()
198199

199-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
200+
git, err := gitutil.New(bkgitutil.WithDir(dir))
200201
require.NoError(t, err)
201202

202203
gittestutil.GitInit(git, t)
@@ -245,7 +246,7 @@ EOT
245246
)
246247
dirDest := t.TempDir()
247248

248-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
249+
git, err := gitutil.New(bkgitutil.WithDir(dir))
249250
require.NoError(t, err)
250251

251252
gittestutil.GitInit(git, t)

tests/policy_build.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tests
33
import (
44
"archive/tar"
55
"bytes"
6+
"context"
67
"encoding/json"
78
"errors"
89
"fmt"
@@ -20,6 +21,7 @@ import (
2021
"github.com/moby/buildkit/client"
2122
"github.com/moby/buildkit/identity"
2223
"github.com/moby/buildkit/util/contentutil"
24+
bkgitutil "github.com/moby/buildkit/util/gitutil"
2325
"github.com/moby/buildkit/util/testutil"
2426
"github.com/moby/buildkit/util/testutil/httpserver"
2527
"github.com/moby/buildkit/util/testutil/integration"
@@ -822,7 +824,7 @@ func testBuildPolicyGit(t *testing.T, sb integration.Sandbox) {
822824
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "Dockerfile"), []byte("FROM busybox:latest\nRUN echo git\n"), 0600))
823825
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "a"), []byte("a"), 0600))
824826

825-
git, err := gitutil.New(gitutil.WithWorkingDir(gitDir))
827+
git, err := gitutil.New(bkgitutil.WithDir(gitDir))
826828
require.NoError(t, err)
827829

828830
gittestutil.GitInit(git, t)
@@ -834,15 +836,18 @@ func testBuildPolicyGit(t *testing.T, sb integration.Sandbox) {
834836
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "b"), []byte("b"), 0600))
835837
gittestutil.GitAdd(git, t, "b")
836838
gittestutil.GitCommit(git, t, "b")
837-
_, err = git.Run("checkout", "-B", "v2")
839+
_, err = git.Run(context.TODO(), "checkout", "-B", "v2")
838840
require.NoError(t, err)
839841

840-
commitHead, err := git.Run("rev-parse", "HEAD")
842+
commitHeadB, err := git.Run(context.TODO(), "rev-parse", "HEAD")
841843
require.NoError(t, err)
842-
commitTag, err := git.Run("rev-parse", "v0.1")
844+
commitHead := strings.TrimSpace(string(commitHeadB))
845+
commitTagB, err := git.Run(context.TODO(), "rev-parse", "v0.1")
843846
require.NoError(t, err)
844-
commitTagCommit, err := git.Run("rev-parse", "v0.1^{commit}")
847+
commitTag := strings.TrimSpace(string(commitTagB))
848+
commitTagCommitB, err := git.Run(context.TODO(), "rev-parse", "v0.1^{commit}")
845849
require.NoError(t, err)
850+
commitTagCommit := strings.TrimSpace(string(commitTagCommitB))
846851
baseURL := gittestutil.GitServeHTTP(git, t)
847852
tagURL := baseURL + "#v0.1"
848853
branchURL := baseURL + "#v2"
@@ -1318,7 +1323,7 @@ default allow = true
13181323
decision := {"allow": allow}
13191324
`), 0600))
13201325

1321-
git, err := gitutil.New(gitutil.WithWorkingDir(gitDir))
1326+
git, err := gitutil.New(bkgitutil.WithDir(gitDir))
13221327
require.NoError(t, err)
13231328
gittestutil.GitInit(git, t)
13241329
gittestutil.GitAdd(git, t, ".")

0 commit comments

Comments
 (0)