Skip to content

Commit

Permalink
builder: explicitly set CWD for all git commands
Browse files Browse the repository at this point in the history
Keep It Simple! Set the working directory for git commands by...setting
the git process's working directory. Git commands can be run in the
parent process's working directory by passing the empty string.

Signed-off-by: Cory Snider <csnider@mirantis.com>
  • Loading branch information
corhere committed Oct 13, 2022
1 parent 8816c3c commit 10db4c2
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 14 deletions.
9 changes: 3 additions & 6 deletions builder/remotecontext/git/gitutils.go
Expand Up @@ -193,12 +193,9 @@ func checkoutGit(root, ref, subdir string) (string, error) {
}

func gitWithinDir(dir string, args ...string) ([]byte, error) {
a := []string{"--work-tree", dir, "--git-dir", filepath.Join(dir, ".git")}
return git(append(a, args...)...)
}

func git(args ...string) ([]byte, error) {
return exec.Command("git", args...).CombinedOutput()
cmd := exec.Command("git", args...)
cmd.Dir = dir
return cmd.CombinedOutput()
}

// isGitTransport returns true if the provided str is a git transport by inspecting
Expand Down
12 changes: 4 additions & 8 deletions builder/remotecontext/git/gitutils_test.go
Expand Up @@ -6,7 +6,6 @@ import (
"net/http/httptest"
"net/url"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
Expand Down Expand Up @@ -160,7 +159,7 @@ func TestCloneArgsGit(t *testing.T) {
}

func gitGetConfig(name string) string {
b, err := git([]string{"config", "--get", name}...)
b, err := gitWithinDir("", "config", "--get", name)
if err != nil {
// since we are interested in empty or non empty string,
// we can safely ignore the err here.
Expand Down Expand Up @@ -191,7 +190,7 @@ func TestCheckoutGit(t *testing.T) {
}

gitDir := filepath.Join(root, "repo")
must(git("-c", "init.defaultBranch=master", "init", gitDir))
must(gitWithinDir(root, "-c", "init.defaultBranch=master", "init", gitDir))
must(gitWithinDir(gitDir, "config", "user.email", "test@docker.com"))
must(gitWithinDir(gitDir, "config", "user.name", "Docker test"))
assert.NilError(t, os.WriteFile(filepath.Join(gitDir, "Dockerfile"), []byte("FROM scratch"), 0644))
Expand All @@ -218,7 +217,7 @@ func TestCheckoutGit(t *testing.T) {

// set up submodule
subrepoDir := filepath.Join(root, "subrepo")
must(git("-c", "init.defaultBranch=master", "init", subrepoDir))
must(gitWithinDir(root, "-c", "init.defaultBranch=master", "init", subrepoDir))
must(gitWithinDir(subrepoDir, "config", "user.email", "test@docker.com"))
must(gitWithinDir(subrepoDir, "config", "user.name", "Docker test"))

Expand All @@ -227,10 +226,7 @@ func TestCheckoutGit(t *testing.T) {
must(gitWithinDir(subrepoDir, "add", "-A"))
must(gitWithinDir(subrepoDir, "commit", "-am", "Subrepo initial"))

cmd := exec.Command("git", "submodule", "add", subrepoDir, "sub") // this command doesn't work with --work-tree
cmd.Dir = gitDir
must(cmd.CombinedOutput())

must(gitWithinDir(gitDir, "submodule", "add", subrepoDir, "sub"))
must(gitWithinDir(gitDir, "add", "-A"))
must(gitWithinDir(gitDir, "commit", "-am", "With submodule"))

Expand Down

0 comments on commit 10db4c2

Please sign in to comment.