cmd/go/internal/vgo: add -getmode=local, -getmode=vendor build flag

The new build flag -getmode=mode changes the way that vgo
resolves references to modules outside the target module.

The default (no -getmode flag) is to download and cache as usual.

With -getmode=local, the local cache is still consulted for modules,
but no network lookups are permitted.

With -getmode==vendor, only the vendor directory is used,
bypassing both the network and the local cache.
In this mode most of the interesting vgo behavior is inaccessible:
there is no world beyond the current module and its vendor directory.

I'm not thrilled with the name -getmode but don't have a better
name yet. It will probably change before the release - this CL is
about implementing the behavior.

Fixes golang/go#25073.

Change-Id: Ic5273f9f2d0263b49540401c4f554190702df099
Reviewed-on: https://go-review.googlesource.com/118316
Reviewed-by: Bryan C. Mills <bcmills@google.com>
8 files changed
tree: 8261d0c733d3062e8818d4f1196278fe5bbc7ba2
  1. AUTHORS
  2. CONTRIBUTING.md
  3. CONTRIBUTORS
  4. LICENSE
  5. PATENTS
  6. README.md
  7. codereview.cfg
  8. main.go
  9. vendor/
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.