1
0
mirror of https://github.com/golang/go synced 2024-11-23 07:00:05 -07:00

cmd/go: link to the FAQ for errors that indicate private VCS repos.

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>
This commit is contained in:
Julie Qiu 2018-11-20 17:42:59 -05:00
parent d70b0ece2f
commit 9a11b73635
3 changed files with 22 additions and 3 deletions

View 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
}

View 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
}

View File

@ -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 .