aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/get/get.go
diff options
context:
space:
mode:
authorDavid Symonds <dsymonds@golang.org>2018-05-17 09:39:21 +1000
committerDavid Symonds <dsymonds@golang.org>2018-06-07 21:50:50 +0000
commit17f54231e86591174b964c5ba93f9d578e2bfa01 (patch)
treeb68113be0f32e021390c9cd7700cdafc5cc1abd6 /src/cmd/go/internal/get/get.go
parent9417ff55c35e0a1623af2a05c6e714c660ad6b4f (diff)
downloadgo-17f54231e86591174b964c5ba93f9d578e2bfa01.tar.gz
go-17f54231e86591174b964c5ba93f9d578e2bfa01.zip
cmd/go: don't refuse to update a present package only because of its source configuration
If a package is checked out in the right place, but uses, for instance, an unusual Git remote configuration, don't refuse to update just because cmd/go can't parse it. In most cases, `git pull -ff-only` (or the equivalent in other VCSes) works just fine. Updates #25432. Change-Id: I1952a0e6e03f185f34029b186e1756c9549689e1 Reviewed-on: https://go-review.googlesource.com/113456 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/cmd/go/internal/get/get.go')
-rw-r--r--src/cmd/go/internal/get/get.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/cmd/go/internal/get/get.go b/src/cmd/go/internal/get/get.go
index 5bfeac387c..ffa15c5ba4 100644
--- a/src/cmd/go/internal/get/get.go
+++ b/src/cmd/go/internal/get/get.go
@@ -369,6 +369,7 @@ func downloadPackage(p *load.Package) error {
vcs *vcsCmd
repo, rootPath string
err error
+ blindRepo bool // set if the repo has unusual configuration
)
security := web.Secure
@@ -389,10 +390,12 @@ func downloadPackage(p *load.Package) error {
dir := filepath.Join(p.Internal.Build.SrcRoot, filepath.FromSlash(rootPath))
remote, err := vcs.remoteRepo(vcs, dir)
if err != nil {
- return err
+ // Proceed anyway. The package is present; we likely just don't understand
+ // the repo configuration (e.g. unusual remote protocol).
+ blindRepo = true
}
repo = remote
- if !*getF {
+ if !*getF && err == nil {
if rr, err := repoRootForImportPath(p.ImportPath, security); err == nil {
repo := rr.repo
if rr.vcs.resolveRepo != nil {
@@ -416,7 +419,7 @@ func downloadPackage(p *load.Package) error {
}
vcs, repo, rootPath = rr.vcs, rr.repo, rr.root
}
- if !vcs.isSecure(repo) && !*getInsecure {
+ if !blindRepo && !vcs.isSecure(repo) && !*getInsecure {
return fmt.Errorf("cannot download, %v uses insecure protocol", repo)
}