]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: link to the FAQ for errors that indicate private VCS repos.
authorJulie Qiu <julie@golang.org>
Tue, 20 Nov 2018 22:42:59 +0000 (17:42 -0500)
committerJulie Qiu <julie@golang.org>
Wed, 12 Dec 2018 15:00:01 +0000 (15:00 +0000)
Updates #25982

Change-Id: I5a284e3844e944f9bfae31fa65b242060d4139c7
Reviewed-on: https://go-review.googlesource.com/c/150777
Run-TryBot: Julie Qiu <julie@golang.org>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/modfetch/codehost/codehost.go
src/cmd/go/internal/modfetch/codehost/git.go
src/cmd/go/testdata/script/mod_get_private_vcs.txt [new file with mode: 0644]

index 988504f4c87c561734aa4cd172adc136331d3f8d..6c17f7886f19e5aea14f17675eb6772dd28156ae 100644 (file)
@@ -196,9 +196,10 @@ func WorkDir(typ, name string) (dir, lockfile string, err error) {
 }
 
 type RunError struct {
-       Cmd    string
-       Err    error
-       Stderr []byte
+       Cmd      string
+       Err      error
+       Stderr   []byte
+       HelpText string
 }
 
 func (e *RunError) Error() string {
@@ -207,6 +208,9 @@ func (e *RunError) Error() string {
        if len(stderr) > 0 {
                text += ":\n\t" + strings.ReplaceAll(string(stderr), "\n", "\n\t")
        }
+       if len(e.HelpText) > 0 {
+               text += "\n" + e.HelpText
+       }
        return text
 }
 
index 7b3775779badf5aa161f8a157ce0f274042f9dd0..588e7496cc50362ddbce4304d84fc36a8311d970 100644 (file)
@@ -164,6 +164,11 @@ func (r *gitRepo) loadRefs() {
        // Most of the time we only care about tags but sometimes we care about heads too.
        out, err := Run(r.dir, "git", "ls-remote", "-q", r.remote)
        if err != nil {
+               if rerr, ok := err.(*RunError); ok {
+                       if bytes.Contains(rerr.Stderr, []byte("fatal: could not read Username")) {
+                               rerr.HelpText = "If this is a private repository, see https://golang.org/doc/faq#git_https for additional information."
+                       }
+               }
                r.refsErr = err
                return
        }
diff --git a/src/cmd/go/testdata/script/mod_get_private_vcs.txt b/src/cmd/go/testdata/script/mod_get_private_vcs.txt
new file mode 100644 (file)
index 0000000..86d78e8
--- /dev/null
@@ -0,0 +1,10 @@
+env GO111MODULE=on
+
+# Testing stderr for git ls-remote; turn off proxy.
+[!net] skip
+[!exec:git] skip
+env GOPROXY=
+
+! go get github.com/golang/nonexist
+stderr 'If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.'
+! stdout .