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 {