mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
builder: explicitly set CWD for all git commands
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>
This commit is contained in:
parent
8deb92d653
commit
0f7b0897cc
2 changed files with 7 additions and 14 deletions
|
@ -192,12 +192,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
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"net/http/httptest"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
@ -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.
|
||||
|
@ -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))
|
||||
|
@ -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"))
|
||||
|
||||
|
@ -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"))
|
||||
|
||||
|
|
Loading…
Reference in a new issue