Skip to content

Commit 7f1c0be

Browse files
committed
gitutil: migrate to BuildKit GitCLI API
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent 63ebbeb commit 7f1c0be

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
@@ -19,6 +19,7 @@ import (
1919
"github.com/docker/cli/cli/command"
2020
"github.com/docker/cli/cli/command/formatter"
2121
"github.com/docker/go-units"
22+
bkgitutil "github.com/moby/buildkit/util/gitutil"
2223
"github.com/pkg/errors"
2324
"github.com/spf13/cobra"
2425
)
@@ -58,14 +59,14 @@ func runLs(ctx context.Context, dockerCli command.Cli, opts lsOptions) error {
5859
if err != nil {
5960
return err
6061
}
61-
gitc, err := gitutil.New(gitutil.WithContext(ctx), gitutil.WithWorkingDir(wd))
62+
gitc, err := gitutil.New(bkgitutil.WithDir(wd))
6263
if err != nil {
6364
if st, err1 := os.Stat(path.Join(wd, ".git")); err1 == nil && st.IsDir() {
6465
return errors.Wrap(err, "git was not found in the system")
6566
}
6667
return errors.Wrapf(err, "could not find git repository for local filter")
6768
}
68-
remote, err := gitc.RemoteURL()
69+
remote, err := gitc.RemoteURL(ctx)
6970
if err != nil {
7071
return errors.Wrapf(err, "could not get remote URL for local filter")
7172
}

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"
@@ -129,7 +130,7 @@ COPY foo /foo
129130
)
130131
dirDest := t.TempDir()
131132

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

135136
gittestutil.GitInit(git, t)
@@ -154,7 +155,7 @@ COPY foo /foo
154155
)
155156
dirDest := t.TempDir()
156157

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

160161
gittestutil.GitInit(git, t)
@@ -181,7 +182,7 @@ COPY foo /foo
181182
)
182183
dirDest := t.TempDir()
183184

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

187188
gittestutil.GitInit(git, t)
@@ -214,7 +215,7 @@ COPY foo /foo
214215
)
215216
dirDest := t.TempDir()
216217

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

220221
gittestutil.GitInit(git, t)
@@ -247,7 +248,7 @@ COPY foo /foo
247248
)
248249
dirDest := t.TempDir()
249250

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

253254
gittestutil.GitInit(git, t)
@@ -280,7 +281,7 @@ COPY foo /foo
280281
)
281282
dirDest := t.TempDir()
282283

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

286287
gittestutil.GitInit(git, t)
@@ -402,7 +403,7 @@ COPY foo /foo
402403
)
403404
dirDest := t.TempDir()
404405

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

408409
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
)
@@ -192,7 +193,7 @@ COPY foo /foo
192193
)
193194
dirDest := t.TempDir()
194195

195-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
196+
git, err := gitutil.New(bkgitutil.WithDir(dir))
196197
require.NoError(t, err)
197198

198199
gittestutil.GitInit(git, t)
@@ -257,7 +258,7 @@ EOT
257258
)
258259
dirDest := t.TempDir()
259260

260-
git, err := gitutil.New(gitutil.WithWorkingDir(dir))
261+
git, err := gitutil.New(bkgitutil.WithDir(dir))
261262
require.NoError(t, err)
262263

263264
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"
@@ -823,7 +825,7 @@ func testBuildPolicyGit(t *testing.T, sb integration.Sandbox) {
823825
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "Dockerfile"), []byte("FROM busybox:latest\nRUN echo git\n"), 0600))
824826
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "a"), []byte("a"), 0600))
825827

826-
git, err := gitutil.New(gitutil.WithWorkingDir(gitDir))
828+
git, err := gitutil.New(bkgitutil.WithDir(gitDir))
827829
require.NoError(t, err)
828830

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

841-
commitHead, err := git.Run("rev-parse", "HEAD")
843+
commitHeadB, err := git.Run(context.TODO(), "rev-parse", "HEAD")
842844
require.NoError(t, err)
843-
commitTag, err := git.Run("rev-parse", "v0.1")
845+
commitHead := strings.TrimSpace(string(commitHeadB))
846+
commitTagB, err := git.Run(context.TODO(), "rev-parse", "v0.1")
844847
require.NoError(t, err)
845-
commitTagCommit, err := git.Run("rev-parse", "v0.1^{commit}")
848+
commitTag := strings.TrimSpace(string(commitTagB))
849+
commitTagCommitB, err := git.Run(context.TODO(), "rev-parse", "v0.1^{commit}")
846850
require.NoError(t, err)
851+
commitTagCommit := strings.TrimSpace(string(commitTagCommitB))
847852
baseURL := gittestutil.GitServeHTTP(git, t)
848853
tagURL := baseURL + "#v0.1"
849854
branchURL := baseURL + "#v2"
@@ -1320,7 +1325,7 @@ default allow = true
13201325
decision := {"allow": allow}
13211326
`), 0600))
13221327

1323-
git, err := gitutil.New(gitutil.WithWorkingDir(gitDir))
1328+
git, err := gitutil.New(bkgitutil.WithDir(gitDir))
13241329
require.NoError(t, err)
13251330
gittestutil.GitInit(git, t)
13261331
gittestutil.GitAdd(git, t, ".")

0 commit comments

Comments
 (0)