mirror of
https://github.com/golang/go
synced 2024-11-21 22:44:40 -07:00
cmd/go/internal/modfetch: pass "-c" arguments to git before subcommands
I accidentally transposed the arguments in CL 556358, causing the shallow 'git fetch' attempt to always fail. That didn't break any tests because we fall back to a full fetch, which works for nearly all real Git servers, and we didn't have a test that checked for shallow fetches. Tested manually using: GOPROXY=direct go mod download -x -json gerrit.wikimedia.org/r/mediawiki@v0.0.0-20240202145822-67da0cbcfdf7 (I'm still thinking about how to add a proper regression test.) Fixes #66147. Change-Id: I0bb17283bae856f369fd24f29375e507d0999933 Cq-Include-Trybots: luci.golang.try:gotip-darwin-amd64-longtest,gotip-linux-amd64-longtest,gotip-windows-amd64-longtest Reviewed-on: https://go-review.googlesource.com/c/go/+/569422 Auto-Submit: Bryan Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
a18aa0e3d1
commit
2ab9218c86
@ -554,7 +554,7 @@ func (r *gitRepo) stat(ctx context.Context, rev string) (info *RevInfo, err erro
|
|||||||
// an apparent Git bug introduced in Git 2.21 (commit 61c771),
|
// an apparent Git bug introduced in Git 2.21 (commit 61c771),
|
||||||
// which causes the handler for protocol version 1 to sometimes miss
|
// which causes the handler for protocol version 1 to sometimes miss
|
||||||
// tags that point to the requested commit (see https://go.dev/issue/56881).
|
// tags that point to the requested commit (see https://go.dev/issue/56881).
|
||||||
_, err = Run(ctx, r.dir, "git", "fetch", "-f", "-c", "protocol.version=2", "--depth=1", r.remote, refspec)
|
_, err = Run(ctx, r.dir, "git", "-c", "protocol.version=2", "fetch", "-f", "--depth=1", r.remote, refspec)
|
||||||
release()
|
release()
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
44
src/cmd/go/testdata/script/reuse_git.txt
vendored
44
src/cmd/go/testdata/script/reuse_git.txt
vendored
@ -7,7 +7,7 @@ env GOSUMDB=off
|
|||||||
|
|
||||||
# go mod download with the pseudo-version should invoke git but not have a TagSum or Ref.
|
# go mod download with the pseudo-version should invoke git but not have a TagSum or Ref.
|
||||||
go mod download -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20170922010558-fc3a09f3dc5c
|
go mod download -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20170922010558-fc3a09f3dc5c
|
||||||
stderr 'git fetch'
|
stderr 'git( .*)* fetch'
|
||||||
cp stdout hellopseudo.json
|
cp stdout hellopseudo.json
|
||||||
! stdout '"(Query|TagPrefix|TagSum|Ref)"'
|
! stdout '"(Query|TagPrefix|TagSum|Ref)"'
|
||||||
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
||||||
@ -18,7 +18,7 @@ go clean -modcache
|
|||||||
|
|
||||||
# go mod download vcstest/hello should invoke git, print origin info
|
# go mod download vcstest/hello should invoke git, print origin info
|
||||||
go mod download -x -json vcs-test.golang.org/git/hello.git@latest
|
go mod download -x -json vcs-test.golang.org/git/hello.git@latest
|
||||||
stderr 'git fetch'
|
stderr 'git( .*)* fetch'
|
||||||
cp stdout hello.json
|
cp stdout hello.json
|
||||||
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
||||||
stdout '"VCS": "git"'
|
stdout '"VCS": "git"'
|
||||||
@ -33,13 +33,13 @@ stdout '"Hash": "fc3a09f3dc5cfe0d7a743ea18f1f5226e68b3777"'
|
|||||||
# but still be careful not to include a TagSum or a Ref, especially not Ref set to HEAD,
|
# but still be careful not to include a TagSum or a Ref, especially not Ref set to HEAD,
|
||||||
# which is easy to do when reusing the cached version from the @latest query.
|
# which is easy to do when reusing the cached version from the @latest query.
|
||||||
go mod download -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20170922010558-fc3a09f3dc5c
|
go mod download -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20170922010558-fc3a09f3dc5c
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
cp stdout hellopseudo2.json
|
cp stdout hellopseudo2.json
|
||||||
cmpenv hellopseudo.json hellopseudo2.json
|
cmpenv hellopseudo.json hellopseudo2.json
|
||||||
|
|
||||||
# go mod download vcstest/hello@hash needs to check TagSum to find pseudoversion base.
|
# go mod download vcstest/hello@hash needs to check TagSum to find pseudoversion base.
|
||||||
go mod download -x -json vcs-test.golang.org/git/hello.git@fc3a09f3dc5c
|
go mod download -x -json vcs-test.golang.org/git/hello.git@fc3a09f3dc5c
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
cp stdout hellohash.json
|
cp stdout hellohash.json
|
||||||
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
||||||
stdout '"Query": "fc3a09f3dc5c"'
|
stdout '"Query": "fc3a09f3dc5c"'
|
||||||
@ -98,7 +98,7 @@ stdout '"RepoSum": "r1:c0/9JCZ25lxoBiK3[+]3BhACU4giH49flcJmBynJ[+]Jvmc="'
|
|||||||
|
|
||||||
# go mod download vcstest/tagtests should invoke git, print origin info
|
# go mod download vcstest/tagtests should invoke git, print origin info
|
||||||
go mod download -x -json vcs-test.golang.org/git/tagtests.git@latest
|
go mod download -x -json vcs-test.golang.org/git/tagtests.git@latest
|
||||||
stderr 'git fetch'
|
stderr 'git( .*)* fetch'
|
||||||
cp stdout tagtests.json
|
cp stdout tagtests.json
|
||||||
stdout '"Version": "v0.2.2"'
|
stdout '"Version": "v0.2.2"'
|
||||||
stdout '"Query": "latest"'
|
stdout '"Query": "latest"'
|
||||||
@ -135,7 +135,7 @@ stdout '"Hash": "c7818c24fa2f3f714c67d0a6d3e411c85a518d1f"'
|
|||||||
|
|
||||||
# go mod download vcstest/prefixtagtests should invoke git, print origin info
|
# go mod download vcstest/prefixtagtests should invoke git, print origin info
|
||||||
go mod download -x -json vcs-test.golang.org/git/prefixtagtests.git/sub@latest
|
go mod download -x -json vcs-test.golang.org/git/prefixtagtests.git/sub@latest
|
||||||
stderr 'git fetch'
|
stderr 'git( .*)* fetch'
|
||||||
cp stdout prefixtagtests.json
|
cp stdout prefixtagtests.json
|
||||||
stdout '"Version": "v0.0.10"'
|
stdout '"Version": "v0.0.10"'
|
||||||
stdout '"Query": "latest"'
|
stdout '"Query": "latest"'
|
||||||
@ -154,12 +154,12 @@ cp stdout all.json
|
|||||||
# clean the module cache, make sure that makes go mod download re-run git fetch, clean again
|
# clean the module cache, make sure that makes go mod download re-run git fetch, clean again
|
||||||
go clean -modcache
|
go clean -modcache
|
||||||
go mod download -x -json vcs-test.golang.org/git/hello.git@latest
|
go mod download -x -json vcs-test.golang.org/git/hello.git@latest
|
||||||
stderr 'git fetch'
|
stderr 'git( .*)* fetch'
|
||||||
go clean -modcache
|
go clean -modcache
|
||||||
|
|
||||||
# reuse go mod download vcstest/hello result
|
# reuse go mod download vcstest/hello result
|
||||||
go mod download -reuse=hello.json -x -json vcs-test.golang.org/git/hello.git@latest
|
go mod download -reuse=hello.json -x -json vcs-test.golang.org/git/hello.git@latest
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
||||||
stdout '"VCS": "git"'
|
stdout '"VCS": "git"'
|
||||||
@ -175,7 +175,7 @@ stdout '"Hash": "fc3a09f3dc5cfe0d7a743ea18f1f5226e68b3777"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello pseudoversion result
|
# reuse go mod download vcstest/hello pseudoversion result
|
||||||
go mod download -reuse=hellopseudo.json -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20170922010558-fc3a09f3dc5c
|
go mod download -reuse=hellopseudo.json -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20170922010558-fc3a09f3dc5c
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
||||||
stdout '"VCS": "git"'
|
stdout '"VCS": "git"'
|
||||||
@ -186,7 +186,7 @@ stdout '"Hash": "fc3a09f3dc5cfe0d7a743ea18f1f5226e68b3777"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello@hash
|
# reuse go mod download vcstest/hello@hash
|
||||||
go mod download -reuse=hellohash.json -x -json vcs-test.golang.org/git/hello.git@fc3a09f3dc5c
|
go mod download -reuse=hellohash.json -x -json vcs-test.golang.org/git/hello.git@fc3a09f3dc5c
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Query": "fc3a09f3dc5c"'
|
stdout '"Query": "fc3a09f3dc5c"'
|
||||||
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
stdout '"Version": "v0.0.0-20170922010558-fc3a09f3dc5c"'
|
||||||
@ -199,7 +199,7 @@ stdout '"Hash": "fc3a09f3dc5cfe0d7a743ea18f1f5226e68b3777"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello/v9 error result
|
# reuse go mod download vcstest/hello/v9 error result
|
||||||
! go mod download -reuse=hellov9.json -x -json vcs-test.golang.org/git/hello.git/v9@latest
|
! go mod download -reuse=hellov9.json -x -json vcs-test.golang.org/git/hello.git/v9@latest
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Error":.*no matching versions'
|
stdout '"Error":.*no matching versions'
|
||||||
! stdout '"TagPrefix"'
|
! stdout '"TagPrefix"'
|
||||||
@ -210,7 +210,7 @@ stdout '"Hash": "fc3a09f3dc5cfe0d7a743ea18f1f5226e68b3777"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello/sub/v9 error result
|
# reuse go mod download vcstest/hello/sub/v9 error result
|
||||||
! go mod download -reuse=hellosubv9.json -x -json vcs-test.golang.org/git/hello.git/sub/v9@latest
|
! go mod download -reuse=hellosubv9.json -x -json vcs-test.golang.org/git/hello.git/sub/v9@latest
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Error":.*no matching versions'
|
stdout '"Error":.*no matching versions'
|
||||||
stdout '"TagPrefix": "sub/"'
|
stdout '"TagPrefix": "sub/"'
|
||||||
@ -221,7 +221,7 @@ stdout '"Hash": "fc3a09f3dc5cfe0d7a743ea18f1f5226e68b3777"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello@nonexist
|
# reuse go mod download vcstest/hello@nonexist
|
||||||
! go mod download -reuse=hellononexist.json -x -json vcs-test.golang.org/git/hello.git@nonexist
|
! go mod download -reuse=hellononexist.json -x -json vcs-test.golang.org/git/hello.git@nonexist
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "nonexist"'
|
stdout '"Version": "nonexist"'
|
||||||
stdout '"Error":.*unknown revision nonexist'
|
stdout '"Error":.*unknown revision nonexist'
|
||||||
@ -231,7 +231,7 @@ stdout '"RepoSum": "r1:c0/9JCZ25lxoBiK3[+]3BhACU4giH49flcJmBynJ[+]Jvmc="'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello@1234567890123456789012345678901234567890
|
# reuse go mod download vcstest/hello@1234567890123456789012345678901234567890
|
||||||
! go mod download -reuse=hellononhash.json -x -json vcs-test.golang.org/git/hello.git@1234567890123456789012345678901234567890
|
! go mod download -reuse=hellononhash.json -x -json vcs-test.golang.org/git/hello.git@1234567890123456789012345678901234567890
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "1234567890123456789012345678901234567890"'
|
stdout '"Version": "1234567890123456789012345678901234567890"'
|
||||||
stdout '"Error":.*unknown revision 1234567890123456789012345678901234567890'
|
stdout '"Error":.*unknown revision 1234567890123456789012345678901234567890'
|
||||||
@ -241,7 +241,7 @@ stdout '"RepoSum": "r1:c0/9JCZ25lxoBiK3[+]3BhACU4giH49flcJmBynJ[+]Jvmc="'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/hello@v0.0.0-20220101120101-123456789abc
|
# reuse go mod download vcstest/hello@v0.0.0-20220101120101-123456789abc
|
||||||
! go mod download -reuse=hellononpseudo.json -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20220101120101-123456789abc
|
! go mod download -reuse=hellononpseudo.json -x -json vcs-test.golang.org/git/hello.git@v0.0.0-20220101120101-123456789abc
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.0.0-20220101120101-123456789abc"'
|
stdout '"Version": "v0.0.0-20220101120101-123456789abc"'
|
||||||
stdout '"Error":.*unknown revision 123456789abc'
|
stdout '"Error":.*unknown revision 123456789abc'
|
||||||
@ -251,7 +251,7 @@ stdout '"RepoSum": "r1:c0/9JCZ25lxoBiK3[+]3BhACU4giH49flcJmBynJ[+]Jvmc="'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/tagtests result
|
# reuse go mod download vcstest/tagtests result
|
||||||
go mod download -reuse=tagtests.json -x -json vcs-test.golang.org/git/tagtests.git@latest
|
go mod download -reuse=tagtests.json -x -json vcs-test.golang.org/git/tagtests.git@latest
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.2.2"'
|
stdout '"Version": "v0.2.2"'
|
||||||
stdout '"Query": "latest"'
|
stdout '"Query": "latest"'
|
||||||
@ -265,7 +265,7 @@ stdout '"Hash": "59356c8cd18c5fe9a598167d98a6843e52d57952"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/tagtests@v0.2.2 result
|
# reuse go mod download vcstest/tagtests@v0.2.2 result
|
||||||
go mod download -reuse=tagtestsv022.json -x -json vcs-test.golang.org/git/tagtests.git@v0.2.2
|
go mod download -reuse=tagtestsv022.json -x -json vcs-test.golang.org/git/tagtests.git@v0.2.2
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.2.2"'
|
stdout '"Version": "v0.2.2"'
|
||||||
! stdout '"Query":'
|
! stdout '"Query":'
|
||||||
@ -279,7 +279,7 @@ stdout '"Hash": "59356c8cd18c5fe9a598167d98a6843e52d57952"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/tagtests@master result
|
# reuse go mod download vcstest/tagtests@master result
|
||||||
go mod download -reuse=tagtestsmaster.json -x -json vcs-test.golang.org/git/tagtests.git@master
|
go mod download -reuse=tagtestsmaster.json -x -json vcs-test.golang.org/git/tagtests.git@master
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.2.3-0.20190509225625-c7818c24fa2f"'
|
stdout '"Version": "v0.2.3-0.20190509225625-c7818c24fa2f"'
|
||||||
stdout '"Query": "master"'
|
stdout '"Query": "master"'
|
||||||
@ -293,7 +293,7 @@ stdout '"Hash": "c7818c24fa2f3f714c67d0a6d3e411c85a518d1f"'
|
|||||||
|
|
||||||
# reuse go mod download vcstest/tagtests@master result again with all.json
|
# reuse go mod download vcstest/tagtests@master result again with all.json
|
||||||
go mod download -reuse=all.json -x -json vcs-test.golang.org/git/tagtests.git@master
|
go mod download -reuse=all.json -x -json vcs-test.golang.org/git/tagtests.git@master
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.2.3-0.20190509225625-c7818c24fa2f"'
|
stdout '"Version": "v0.2.3-0.20190509225625-c7818c24fa2f"'
|
||||||
stdout '"Query": "master"'
|
stdout '"Query": "master"'
|
||||||
@ -307,7 +307,7 @@ stdout '"Hash": "c7818c24fa2f3f714c67d0a6d3e411c85a518d1f"'
|
|||||||
|
|
||||||
# go mod download vcstest/prefixtagtests result with json
|
# go mod download vcstest/prefixtagtests result with json
|
||||||
go mod download -reuse=prefixtagtests.json -x -json vcs-test.golang.org/git/prefixtagtests.git/sub@latest
|
go mod download -reuse=prefixtagtests.json -x -json vcs-test.golang.org/git/prefixtagtests.git/sub@latest
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Version": "v0.0.10"'
|
stdout '"Version": "v0.0.10"'
|
||||||
stdout '"Query": "latest"'
|
stdout '"Query": "latest"'
|
||||||
stdout '"VCS": "git"'
|
stdout '"VCS": "git"'
|
||||||
@ -321,7 +321,7 @@ stdout '"Hash": "2b7c4692e12c109263cab51b416fcc835ddd7eae"'
|
|||||||
|
|
||||||
# reuse the bulk results with all.json
|
# reuse the bulk results with all.json
|
||||||
! go mod download -reuse=all.json -json vcs-test.golang.org/git/hello.git@latest vcs-test.golang.org/git/hello.git/v9@latest vcs-test.golang.org/git/hello.git/sub/v9@latest vcs-test.golang.org/git/tagtests.git@latest vcs-test.golang.org/git/tagtests.git@v0.2.2 vcs-test.golang.org/git/tagtests.git@master
|
! go mod download -reuse=all.json -json vcs-test.golang.org/git/hello.git@latest vcs-test.golang.org/git/hello.git/v9@latest vcs-test.golang.org/git/hello.git/sub/v9@latest vcs-test.golang.org/git/tagtests.git@latest vcs-test.golang.org/git/tagtests.git@v0.2.2 vcs-test.golang.org/git/tagtests.git@master
|
||||||
! stderr 'git fetch'
|
! stderr 'git( .*)* fetch'
|
||||||
stdout '"Reuse": true'
|
stdout '"Reuse": true'
|
||||||
! stdout '"(Dir|Info|GoMod|Zip)"'
|
! stdout '"(Dir|Info|GoMod|Zip)"'
|
||||||
|
|
||||||
@ -329,7 +329,7 @@ stdout '"Reuse": true'
|
|||||||
cp tagtestsv022.json tagtestsv022badhash.json
|
cp tagtestsv022.json tagtestsv022badhash.json
|
||||||
replace '57952' '56952XXX' tagtestsv022badhash.json
|
replace '57952' '56952XXX' tagtestsv022badhash.json
|
||||||
go mod download -reuse=tagtestsv022badhash.json -x -json vcs-test.golang.org/git/tagtests.git@v0.2.2
|
go mod download -reuse=tagtestsv022badhash.json -x -json vcs-test.golang.org/git/tagtests.git@v0.2.2
|
||||||
stderr 'git fetch'
|
stderr 'git( .*)* fetch'
|
||||||
! stdout '"Reuse": true'
|
! stdout '"Reuse": true'
|
||||||
stdout '"Version": "v0.2.2"'
|
stdout '"Version": "v0.2.2"'
|
||||||
! stdout '"Query"'
|
! stdout '"Query"'
|
||||||
|
Loading…
Reference in New Issue
Block a user