1
0
mirror of https://github.com/golang/go synced 2024-11-26 22:11:25 -07:00

cmd/go: retain sums for replacement modules in 'go mod tidy'

Fixes #27868

Change-Id: I6c2d221c4325a2f44625e797a82735d812ee0ec1
Reviewed-on: https://go-review.googlesource.com/c/153817
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
Bryan C. Mills 2018-12-11 21:03:11 -05:00
parent 05bbec7357
commit cc8ae42a12
2 changed files with 39 additions and 1 deletions

View File

@ -77,7 +77,17 @@ func modTidyGoSum() {
keep := make(map[module.Version]bool) keep := make(map[module.Version]bool)
var walk func(module.Version) var walk func(module.Version)
walk = func(m module.Version) { walk = func(m module.Version) {
keep[m] = true // If we build using a replacement module, keep the sum for the replacement,
// since that's the code we'll actually use during a build.
//
// TODO(golang.org/issue/29182): Perhaps we should keep both sums, and the
// sums for both sets of transitive requirements.
r := modload.Replacement(m)
if r.Path == "" {
keep[m] = true
} else {
keep[r] = true
}
list, _ := reqs.Required(m) list, _ := reqs.Required(m)
for _, r := range list { for _, r := range list {
if !keep[r] { if !keep[r] {

View File

@ -0,0 +1,28 @@
env GO111MODULE=on
# After 'go get -d', the go.sum file should contain the sum for the module.
go get -d rsc.io/quote@v1.5.0
grep 'rsc.io/quote v1.5.0' go.sum
# If we replace the module and run 'go mod tidy', we should get a sum for the replacement.
go mod edit -replace rsc.io/quote@v1.5.0=rsc.io/quote@v1.5.1
go mod tidy
grep 'rsc.io/quote v1.5.1' go.sum
cp go.sum go.sum.tidy
# 'go mod vendor' should preserve that sum, and should not need to add any new entries.
go mod vendor
grep 'rsc.io/quote v1.5.1' go.sum
cmp go.sum go.sum.tidy
-- go.mod --
module golang.org/issue/27868
require rsc.io/quote v1.5.0
-- main.go --
package main
import _ "rsc.io/quote"
func main() {}