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
This commit is contained in:
Yann Hodique 2018-05-22 13:50:17 -07:00
Родитель 3e697f6afb
Коммит 82c576a133
1 изменённых файлов: 16 добавлений и 0 удалений

Просмотреть файл

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