diff options
| author | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2016-03-24 03:21:01 +0900 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2016-10-06 01:28:55 +0000 |
| commit | 9615674405d24ddf198471f1dd2d30fc558642b9 (patch) | |
| tree | 5a7c0e50b6b1efb61b74ab1b7f51d38fb6198f24 /git-codereview/branch.go | |
| parent | 50528ca764718386baa44c0daec70913cf14addc (diff) | |
| download | go-x-review-9615674405d24ddf198471f1dd2d30fc558642b9.tar.xz | |
review: Fix error of git change on windows
git change doesn't pass @{u} correctly on windows.
The runtime of msys2/cygwin runtime treat @{u] as @u on cmd.exe.
This is a workaround for avoiding mis-converting.
Fixes golang/go#15036
Change-Id: Ia0389108af69a8b8987ccba1ed933d0767f8efa7
Reviewed-on: https://go-review.googlesource.com/21018
Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'git-codereview/branch.go')
| -rw-r--r-- | git-codereview/branch.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/git-codereview/branch.go b/git-codereview/branch.go index c96bce0..5d47dc9 100644 --- a/git-codereview/branch.go +++ b/git-codereview/branch.go @@ -7,8 +7,10 @@ package main import ( "bytes" "fmt" + "os" "os/exec" "regexp" + "runtime" "strings" ) @@ -67,7 +69,17 @@ func (b *Branch) OriginBranch() string { return b.originBranch } argv := []string{"git", "rev-parse", "--abbrev-ref", b.Name + "@{u}"} - out, err := exec.Command(argv[0], argv[1:]...).CombinedOutput() + cmd := exec.Command(argv[0], argv[1:]...) + if runtime.GOOS == "windows" { + // Workaround on windows. git for windows can't handle @{u} as same as + // given. Disable glob for this command if running on Cygwin or MSYS2. + envs := os.Environ() + envs = append(envs, "CYGWIN=noglob "+os.Getenv("CYGWIN")) + envs = append(envs, "MSYS=noglob "+os.Getenv("MSYS")) + cmd.Env = envs + } + + out, err := cmd.CombinedOutput() if err == nil && len(out) > 0 { b.originBranch = string(bytes.TrimSpace(out)) return b.originBranch |
