]> Cypherpunks repositories - gostls13.git/commit
cmd/go: use .mod instead of .zip to determine if version has go.mod file
authorJay Conrod <jayconrod@google.com>
Tue, 27 Jul 2021 17:22:35 +0000 (10:22 -0700)
committerJay Conrod <jayconrod@google.com>
Tue, 27 Jul 2021 22:01:54 +0000 (22:01 +0000)
commit7cd10c1149e51a9d2f0868babaf66b8091b9c0b9
treef190df0ead3f829b86d70b586c89516b9683f9b6
parentc8cf0f74e4a8f078ab5570e76c37621a0daf0309
cmd/go: use .mod instead of .zip to determine if version has go.mod file

When checking for updates, the go command checks whether the highest
compatible version has a go.mod file in order to determine whether
+incompatible versions may be considered "latest". Previously, to
perform this check, the go command would download the content of the
module (the .zip file) to see whether a go.mod file was present at the
root. This is slower than necessary, and it caused 'go list -m -u' to
try to save the sum for the .zip file in go.sum in some cases.

With this change, the go command only downloads the .mod file and
checks whether it appears to be a fake file generated for a version
that didn't have a go.mod file. This is faster and requires less
verification. Fake files only have a "module" directive. It's possible
to commit a file that passes this test, but it would be difficult to
do accidentally: Go 1.12 and later at least add a "go" directive. A
false positive here would cause version queries to have slightly
different results but would not affect builds.

Fixes #47377

Change-Id: Ie5ffd0b45e39bd0921328a60af99a9f6e5ab6346
Reviewed-on: https://go-review.googlesource.com/c/go/+/337850
Trust: Jay Conrod <jayconrod@google.com>
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
src/cmd/go/internal/modfetch/coderepo.go
src/cmd/go/internal/modload/modfile.go
src/cmd/go/internal/modload/query.go
src/cmd/go/testdata/script/mod_update_sum_readonly.txt [new file with mode: 0644]