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) + } +}