Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions build/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/docker/buildx/util/gitutil"
"github.com/docker/buildx/util/osutil"
"github.com/moby/buildkit/client"
bkgitutil "github.com/moby/buildkit/util/gitutil"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
)
Expand Down Expand Up @@ -61,29 +62,30 @@ func getGitAttributes(ctx context.Context, contextPath, dockerfilePath string) (
}
wd = osutil.SanitizePath(wd)

gitc, err := gitutil.New(gitutil.WithContext(ctx), gitutil.WithWorkingDir(wd))
gitc, err := gitutil.New(bkgitutil.WithDir(wd))
if err != nil {
if st, err1 := os.Stat(path.Join(wd, ".git")); err1 == nil && st.IsDir() {
return nil, errors.Wrap(err, "git was not found in the system")
}
return nil, nil
}

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

root, err := gitc.RootDir()
root, err := gitc.WorkTree(ctx)
if err != nil {
return nil, errors.Wrap(err, "failed to get git root dir")
}
root = osutil.SanitizePath(root)

res := make(map[string]string)

if sha, err := gitc.FullCommit(); err != nil && !gitutil.IsUnknownRevision(err) {
if sha, err := gitc.FullCommit(ctx); err != nil && !gitutil.IsUnknownRevision(err) {
return nil, errors.Wrap(err, "failed to get git commit")
} else if sha != "" {
checkDirty := false
Expand All @@ -92,7 +94,7 @@ func getGitAttributes(ctx context.Context, contextPath, dockerfilePath string) (
checkDirty = v
}
}
if checkDirty && gitc.IsDirty() {
if checkDirty && gitc.IsDirty(ctx) {
sha += "-dirty"
}
if setGitLabels {
Expand All @@ -103,7 +105,7 @@ func getGitAttributes(ctx context.Context, contextPath, dockerfilePath string) (
}
}

if rurl, err := gitc.RemoteURL(); err == nil && rurl != "" {
if rurl, err := gitc.RemoteURL(ctx); err == nil && rurl != "" {
if setGitLabels {
res["label:"+ocispecs.AnnotationSource] = rurl
}
Expand Down
5 changes: 3 additions & 2 deletions commands/history/ls.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/docker/cli/cli/command"
"github.com/docker/cli/cli/command/formatter"
"github.com/docker/go-units"
bkgitutil "github.com/moby/buildkit/util/gitutil"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -58,14 +59,14 @@ func runLs(ctx context.Context, dockerCli command.Cli, opts lsOptions) error {
if err != nil {
return err
}
gitc, err := gitutil.New(gitutil.WithContext(ctx), gitutil.WithWorkingDir(wd))
gitc, err := gitutil.New(bkgitutil.WithDir(wd))
if err != nil {
if st, err1 := os.Stat(path.Join(wd, ".git")); err1 == nil && st.IsDir() {
return errors.Wrap(err, "git was not found in the system")
}
return errors.Wrapf(err, "could not find git repository for local filter")
}
remote, err := gitc.RemoteURL()
remote, err := gitc.RemoteURL(ctx)
if err != nil {
return errors.Wrapf(err, "could not get remote URL for local filter")
}
Expand Down
29 changes: 15 additions & 14 deletions tests/bake.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/moby/buildkit/identity"
provenancetypes "github.com/moby/buildkit/solver/llbsolver/provenance/types"
"github.com/moby/buildkit/util/contentutil"
bkgitutil "github.com/moby/buildkit/util/gitutil"
"github.com/moby/buildkit/util/testutil"
"github.com/moby/buildkit/util/testutil/integration"
"github.com/pkg/errors"
Expand Down Expand Up @@ -551,7 +552,7 @@ COPY super-cool.txt /
fstest.CreateFile("bar/super-cool.txt", []byte("super cool"), 0600),
)

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)
gittestutil.GitInit(git, t)
gittestutil.GitAdd(git, t, "docker-bake.hcl", "bar")
Expand Down Expand Up @@ -688,7 +689,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -718,7 +719,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -765,7 +766,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -834,7 +835,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -868,14 +869,14 @@ EOT
)
dirDest := t.TempDir()

gitSpec, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
gitSpec, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)
gittestutil.GitInit(gitSpec, t)
gittestutil.GitAdd(gitSpec, t, "docker-bake.hcl")
gittestutil.GitCommit(gitSpec, t, "initial commit")
addrSpec := gittestutil.GitServeHTTP(gitSpec, t)

gitSrc, err := gitutil.New(gitutil.WithWorkingDir(dirSrc))
gitSrc, err := gitutil.New(bkgitutil.WithDir(dirSrc))
require.NoError(t, err)
gittestutil.GitInit(gitSrc, t)
gittestutil.GitAdd(gitSrc, t, "foo")
Expand Down Expand Up @@ -909,7 +910,7 @@ COPY super-cool.txt /
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)
gittestutil.GitInit(git, t)
gittestutil.GitAdd(git, t, "docker-bake.hcl", "bar")
Expand Down Expand Up @@ -948,7 +949,7 @@ COPY --from=files file.txt /file.txt
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)
gittestutil.GitInit(git, t)
gittestutil.GitAdd(git, t, "docker-bake.hcl", "build", "files-src")
Expand Down Expand Up @@ -984,7 +985,7 @@ COPY --from=files marker.txt /marker.txt
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)
gittestutil.GitInit(git, t)
gittestutil.GitAdd(git, t, "docker-bake.hcl", "build", "marker.txt")
Expand Down Expand Up @@ -1023,7 +1024,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -1071,7 +1072,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -1127,7 +1128,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -1179,7 +1180,7 @@ COPY foo /foo
fstest.CreateFile("foo", []byte("foo"), 0600),
)

git, err := gitutil.New(gitutil.WithWorkingDir(dirSpec))
git, err := gitutil.New(bkgitutil.WithDir(dirSpec))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down
15 changes: 8 additions & 7 deletions tests/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
provenancetypes "github.com/moby/buildkit/solver/llbsolver/provenance/types"
"github.com/moby/buildkit/util/appdefaults"
"github.com/moby/buildkit/util/contentutil"
bkgitutil "github.com/moby/buildkit/util/gitutil"
"github.com/moby/buildkit/util/testutil"
"github.com/moby/buildkit/util/testutil/integration"
"github.com/opencontainers/go-digest"
Expand Down Expand Up @@ -129,7 +130,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand All @@ -154,7 +155,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand All @@ -181,7 +182,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -214,7 +215,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -247,7 +248,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -280,7 +281,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -402,7 +403,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down
5 changes: 3 additions & 2 deletions tests/history.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/containerd/continuity/fs/fstest"
"github.com/docker/buildx/util/gitutil"
"github.com/docker/buildx/util/gitutil/gittestutil"
bkgitutil "github.com/moby/buildkit/util/gitutil"
"github.com/moby/buildkit/util/testutil/integration"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -192,7 +193,7 @@ COPY foo /foo
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down Expand Up @@ -257,7 +258,7 @@ EOT
)
dirDest := t.TempDir()

git, err := gitutil.New(gitutil.WithWorkingDir(dir))
git, err := gitutil.New(bkgitutil.WithDir(dir))
require.NoError(t, err)

gittestutil.GitInit(git, t)
Expand Down
17 changes: 11 additions & 6 deletions tests/policy_build.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package tests
import (
"archive/tar"
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
Expand All @@ -20,6 +21,7 @@ import (
"github.com/moby/buildkit/client"
"github.com/moby/buildkit/identity"
"github.com/moby/buildkit/util/contentutil"
bkgitutil "github.com/moby/buildkit/util/gitutil"
"github.com/moby/buildkit/util/testutil"
"github.com/moby/buildkit/util/testutil/httpserver"
"github.com/moby/buildkit/util/testutil/integration"
Expand Down Expand Up @@ -823,7 +825,7 @@ func testBuildPolicyGit(t *testing.T, sb integration.Sandbox) {
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "Dockerfile"), []byte("FROM busybox:latest\nRUN echo git\n"), 0600))
require.NoError(t, os.WriteFile(filepath.Join(gitDir, "a"), []byte("a"), 0600))

git, err := gitutil.New(gitutil.WithWorkingDir(gitDir))
git, err := gitutil.New(bkgitutil.WithDir(gitDir))
require.NoError(t, err)

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

commitHead, err := git.Run("rev-parse", "HEAD")
commitHeadB, err := git.Run(context.TODO(), "rev-parse", "HEAD")
require.NoError(t, err)
commitTag, err := git.Run("rev-parse", "v0.1")
commitHead := strings.TrimSpace(string(commitHeadB))
commitTagB, err := git.Run(context.TODO(), "rev-parse", "v0.1")
require.NoError(t, err)
commitTagCommit, err := git.Run("rev-parse", "v0.1^{commit}")
commitTag := strings.TrimSpace(string(commitTagB))
commitTagCommitB, err := git.Run(context.TODO(), "rev-parse", "v0.1^{commit}")
require.NoError(t, err)
commitTagCommit := strings.TrimSpace(string(commitTagCommitB))
baseURL := gittestutil.GitServeHTTP(git, t)
tagURL := baseURL + "#v0.1"
branchURL := baseURL + "#v2"
Expand Down Expand Up @@ -1320,7 +1325,7 @@ default allow = true
decision := {"allow": allow}
`), 0600))

git, err := gitutil.New(gitutil.WithWorkingDir(gitDir))
git, err := gitutil.New(bkgitutil.WithDir(gitDir))
require.NoError(t, err)
gittestutil.GitInit(git, t)
gittestutil.GitAdd(git, t, ".")
Expand Down
Loading
Loading