]> Cypherpunks repositories - gostls13.git/commit
cmd/go: query each path only once in 'go get'
authorBryan C. Mills <bcmills@google.com>
Thu, 8 Aug 2019 22:09:54 +0000 (18:09 -0400)
committerBryan C. Mills <bcmills@google.com>
Fri, 9 Aug 2019 15:52:43 +0000 (15:52 +0000)
commit2b8b34aa30b69d66d48aedc5ffb4a9f26f37988f
treebd81825296a3d6791a3f1b2620d3b0057d337761
parent1dc0110bf725640a9b912e3d31e6654ed1c4da9d
cmd/go: query each path only once in 'go get'

If we don't know whether a path is a module path or a package path,
previously we would first try a module query for it, then fall back to
a package query.

If we are using a sequence of proxies with fallback (as will be the
default in Go 1.13), and the path is not actually a module path, that
initial module query will fail against the first proxy, then
immediately fall back to the next proxy in the sequence — even if the
query could have been satisfied by some other (prefix) module
available from the first proxy.

Instead, we now query the requested path as only one kind of path.
If we query it as a package path but it turns out to only exist as a
module, we can detect that as a PackageNotInModuleError with an
appropriate module path — we do not need to issue a second query to
classify it.

Fixes #31785

Change-Id: I581d44279196e41d1fed27ec25489e75d62654e3
Reviewed-on: https://go-review.googlesource.com/c/go/+/189517
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/modfetch/repo.go
src/cmd/go/internal/modget/get.go
src/cmd/go/internal/modload/query.go
src/cmd/go/testdata/script/mod_get_fallback.txt [new file with mode: 0644]
src/cmd/go/testdata/script/mod_get_newcycle.txt
src/cmd/go/testdata/script/mod_sumdb.txt