cmd/go: pass --no-decorate when listing git tags for a commit

This avoids a parse error when the user's global .gitconfig sets
log.decorate to true.

Fixes #51312.

Change-Id: Ic47b0f604c0c3a404ec50d6e09f4e138045ac2f2
Reviewed-on: https://go-review.googlesource.com/c/go/+/387835
Run-TryBot: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
hidu 2022-03-03 13:33:38 +08:00 коммит произвёл Gopher Robot
Родитель 3580ef9d64
Коммит a30f434667
2 изменённых файлов: 29 добавлений и 1 удалений

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

@ -447,7 +447,7 @@ func (r *gitRepo) fetchRefsLocked() error {
// statLocal returns a RevInfo describing rev in the local git repository. // statLocal returns a RevInfo describing rev in the local git repository.
// It uses version as info.Version. // It uses version as info.Version.
func (r *gitRepo) statLocal(version, rev string) (*RevInfo, error) { func (r *gitRepo) statLocal(version, rev string) (*RevInfo, error) {
out, err := Run(r.dir, "git", "-c", "log.showsignature=false", "log", "-n1", "--format=format:%H %ct %D", rev, "--") out, err := Run(r.dir, "git", "-c", "log.showsignature=false", "log", "--no-decorate", "-n1", "--format=format:%H %ct %D", rev, "--")
if err != nil { if err != nil {
return nil, &UnknownRevisionError{Rev: rev} return nil, &UnknownRevisionError{Rev: rev}
} }

28
src/cmd/go/testdata/script/mod_download_git_decorate_full.txt поставляемый Normal file
Просмотреть файл

@ -0,0 +1,28 @@
env GO111MODULE=on
[!net] skip
[!exec:git] skip
env GOPROXY=direct
env HOME=$WORK/home/gopher
go env GOPROXY
stdout 'direct'
exec git config --get log.decorate
stdout 'full'
# Test that Git log with user's global config '~/gitconfig' has log.decorate=full
# go mod download has an error 'v1.x.y is not a tag'
# with go1.16.14:
# `go1.16.14 list -m vcs-test.golang.org/git/gitrepo1.git@v1.2.3`
# will output with error:
# go list -m: vcs-test.golang.org/git/gitrepo1.git@v1.2.3: invalid version: unknown revision v1.2.3
# See golang/go#51312.
go list -m vcs-test.golang.org/git/gitrepo1.git@v1.2.3
stdout 'vcs-test.golang.org/git/gitrepo1.git v1.2.3'
-- $WORK/home/gopher/.gitconfig --
[log]
decorate = full