cmd/go/internal/modfetch/gitrepo: simplify and cache git access

This CL drops the Root method from codehost.Repo,
since a codehost.Repo is really just about access to a source tree.
It has no real knowledge of anything related to modules or
import paths, so the Root method was out of place.

Dropping Root and then caching gitrepo by remote
should guarantee that there is at most one *gitrepo.repo
for a particular vcswork checkout directory.

Add a lock to codehost.Run to guarantee that at most one
command runs in a directory at a time. This should not
be strictly necessary now, but it lets bugs be just inefficiencies
instead of crashes.

Change-Id: I983c7a4691de3a0aa809c1af61679b48a77667e0
Reviewed-on: https://go-review.googlesource.com/120041
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
11 files changed
tree: 57457119ece2bd82714537b506839b9614473652
  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.