cmd/go/internal/modfetch: fix conversion of legacy v2 versions

If a legacy requirement file (for example Gopkg.lock) lists
a package x.com/y/z at version v2.0.0, we assume that
is not a module-aware package, so it should be addressed
as a pseudo-version v0.0.0-date-hash.

But the converter was allowing the v2.0.0 through,
which then failed the next time vgo was invoked.

This CL rejects during conversion (meaning they turn
into pseudo-versions) any versions that don't match
the expected major version for the given module path.

Fixes golang/go#24056.
Fixes golang/go#24585.

Change-Id: Ib2c9ea31d2581fd55cae32e8c89c3587bd658a60
Reviewed-on: https://go-review.googlesource.com/107660
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
3 files changed
tree: 5730ef5d1228641e96e49d88f23aacaaecbaccec
  1. vendor/
  2. AUTHORS
  3. codereview.cfg
  4. CONTRIBUTING.md
  5. CONTRIBUTORS
  6. LICENSE
  7. main.go
  8. PATENTS
  9. README.md
README.md

Versioned Go Prototype (vgo)

This repository holds a prototype of what the go command might look like with integrated support for package versioning.

See research.swtch.com/vgo for documents about the design.

Download/Install

Use go get -u golang.org/x/vgo.

You can also manually git clone the repository to $GOPATH/src/golang.org/x/vgo.

Report Issues / Send Patches

See CONTRIBUTING.md.

This is still a very early prototype. You are likely to run into bugs. Please file bugs in the main Go issue tracker, golang.org/issue, and put the prefix x/vgo: in the issue title.

Thank you.