From 3e9f0636709de7cd86a08785f2e64487580bf5ea Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 17 Dec 2015 01:41:15 -0500 Subject: [PATCH] cmd/go: allow omitted user name in git ssh repo syntax No test because the code has no test. Fixes #12313. Change-Id: I2cfd0a0422c0cd76f0371c2d3bbbdf5bb3b3f1eb Reviewed-on: https://go-review.googlesource.com/17951 Reviewed-by: Brad Fitzpatrick --- src/cmd/go/vcs.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/vcs.go b/src/cmd/go/vcs.go index a1100960bf..316a7ec79d 100644 --- a/src/cmd/go/vcs.go +++ b/src/cmd/go/vcs.go @@ -147,7 +147,7 @@ var vcsGit = &vcsCmd{ // scpSyntaxRe matches the SCP-like addresses used by Git to access // repositories by SSH. -var scpSyntaxRe = regexp.MustCompile(`^([a-zA-Z0-9_]+)@([a-zA-Z0-9._-]+):(.*)$`) +var scpSyntaxRe = regexp.MustCompile(`^(?:([a-zA-Z0-9_]+)@)?([a-zA-Z0-9._-]+):(.*)$`) func gitRemoteRepo(vcsGit *vcsCmd, rootDir string) (remoteRepo string, err error) { cmd := "config remote.origin.url" @@ -171,10 +171,12 @@ func gitRemoteRepo(vcsGit *vcsCmd, rootDir string) (remoteRepo string, err error // "ssh://git@github.com/user/repo". repoURL = &url.URL{ Scheme: "ssh", - User: url.User(m[1]), Host: m[2], RawPath: m[3], } + if m[1] != "" { + repoURL.User = url.User(m[1]) + } } else { repoURL, err = url.Parse(out) if err != nil {