From 82c576a1330070862c8eea23457da6ba10119e54 Mon Sep 17 00:00:00 2001 From: Yann Hodique Date: Tue, 22 May 2018 13:50:17 -0700 Subject: [PATCH] gps: unset some GIT_* variables for git operations This fixes 2 classes of bugs: - running unit tests as part of a git rebase invocation - running dep from a repository that has a separate GIT_DIR/GIT_WORK_TREE --- gps/cmd.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gps/cmd.go b/gps/cmd.go index 1166cb9c..f7bfb810 100644 --- a/gps/cmd.go +++ b/gps/cmd.go @@ -4,6 +4,10 @@ package gps +import ( + "os" +) + func (c cmd) Args() []string { return c.Cmd.Args } @@ -15,3 +19,15 @@ func (c cmd) SetDir(dir string) { func (c cmd) SetEnv(env []string) { c.Cmd.Env = env } + +func init() { + // For our git repositories, we very much assume a "regular" topology. + // Therefore, no value for the following variables can be relevant to + // us. Unsetting globally properly propagates to libraries like + // github.com/Masterminds/vcs, which cannot make the same assumption in + // general. + parasiteGitVars := []string{"GIT_DIR", "GIT_INDEX_FILE", "GIT_OBJECT_DIRECTORY", "GIT_WORK_TREE"} + for _, e := range parasiteGitVars { + os.Unsetenv(e) + } +}