internal/stdlib: get versions from local repo
When a local repo path has been specified, Versions will read refs
from that repo instead of the remote.
I checked with strace that visiting a stdlib package did
not hit the network after this change.
Fixes golang/go#50575
Change-Id: I3e61ab5a3f6e1be85c437412a0e4d4149b7f1f3c
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/378054
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
diff --git a/internal/stdlib/stdlib.go b/internal/stdlib/stdlib.go
index 1f82179..926c7b3 100644
--- a/internal/stdlib/stdlib.go
+++ b/internal/stdlib/stdlib.go
@@ -324,6 +324,23 @@
var refNames []plumbing.ReferenceName
if UseTestData {
refNames = testRefs
+ } else if path := getGoRepoPath(); path != "" {
+ repo, err := git.PlainOpen(path)
+ if err != nil {
+ return nil, err
+ }
+ iter, err := repo.References()
+ if err != nil {
+ return nil, err
+ }
+ defer iter.Close()
+ err = iter.ForEach(func(r *plumbing.Reference) error {
+ refNames = append(refNames, r.Name())
+ return nil
+ })
+ if err != nil {
+ return nil, err
+ }
} else {
refs, err := remoteRefs()
if err != nil {