Commit 06928918 authored by Andrew Gerrand's avatar Andrew Gerrand

cmd/go: restore support for git submodules and update docs

Fixes #16165

Change-Id: Ic90e5873e0c8ee044f09543177192dcae1dcdbed
Reviewed-on: https://go-review.googlesource.com/24531
Run-TryBot: Andrew Gerrand <adg@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent b0838ca2
...@@ -508,8 +508,7 @@ ...@@ -508,8 +508,7 @@
// searches for a branch or tag named "go1". If no such version exists it // searches for a branch or tag named "go1". If no such version exists it
// retrieves the most recent version of the package. // retrieves the most recent version of the package.
// //
// Unless vendoring support is disabled (see 'go help gopath'), // When go get checks out or updates a Git repository,
// when go get checks out or updates a Git repository,
// it also updates any git submodules referenced by the repository. // it also updates any git submodules referenced by the repository.
// //
// Get never checks out or updates code stored in vendor directories. // Get never checks out or updates code stored in vendor directories.
...@@ -1271,10 +1270,9 @@ ...@@ -1271,10 +1270,9 @@
// let package authors make sure the custom import path is used and not a // let package authors make sure the custom import path is used and not a
// direct path to the underlying code hosting site. // direct path to the underlying code hosting site.
// //
// If vendoring is enabled (see 'go help gopath'), then import path checking is // Import path checking is disabled for code found within vendor trees.
// disabled for code found within vendor trees. This makes it possible to copy // This makes it possible to copy code into alternate locations in vendor trees
// code into alternate locations in vendor trees without needing to update import // without needing to update import comments.
// comments.
// //
// See https://golang.org/s/go14customimport for details. // See https://golang.org/s/go14customimport for details.
// //
......
...@@ -55,8 +55,7 @@ rule is that if the local installation is running version "go1", get ...@@ -55,8 +55,7 @@ rule is that if the local installation is running version "go1", get
searches for a branch or tag named "go1". If no such version exists it searches for a branch or tag named "go1". If no such version exists it
retrieves the most recent version of the package. retrieves the most recent version of the package.
Unless vendoring support is disabled (see 'go help gopath'), When go get checks out or updates a Git repository,
when go get checks out or updates a Git repository,
it also updates any git submodules referenced by the repository. it also updates any git submodules referenced by the repository.
Get never checks out or updates code stored in vendor directories. Get never checks out or updates code stored in vendor directories.
......
...@@ -489,6 +489,16 @@ func (tg *testgoData) path(name string) string { ...@@ -489,6 +489,16 @@ func (tg *testgoData) path(name string) string {
return filepath.Join(tg.tempdir, name) return filepath.Join(tg.tempdir, name)
} }
// mustExist fails if path does not exist.
func (tg *testgoData) mustExist(path string) {
if _, err := os.Stat(path); err != nil {
if os.IsNotExist(err) {
tg.t.Fatalf("%s does not exist but should", path)
}
tg.t.Fatalf("%s stat failed: %v", path, err)
}
}
// mustNotExist fails if path exists. // mustNotExist fails if path exists.
func (tg *testgoData) mustNotExist(path string) { func (tg *testgoData) mustNotExist(path string) {
if _, err := os.Stat(path); err == nil || !os.IsNotExist(err) { if _, err := os.Stat(path); err == nil || !os.IsNotExist(err) {
......
...@@ -261,10 +261,9 @@ unless it is being referred to by that import path. In this way, import comments ...@@ -261,10 +261,9 @@ unless it is being referred to by that import path. In this way, import comments
let package authors make sure the custom import path is used and not a let package authors make sure the custom import path is used and not a
direct path to the underlying code hosting site. direct path to the underlying code hosting site.
If vendoring is enabled (see 'go help gopath'), then import path checking is Import path checking is disabled for code found within vendor trees.
disabled for code found within vendor trees. This makes it possible to copy This makes it possible to copy code into alternate locations in vendor trees
code into alternate locations in vendor trees without needing to update import without needing to update import comments.
comments.
See https://golang.org/s/go14customimport for details. See https://golang.org/s/go14customimport for details.
`, `,
......
...@@ -383,9 +383,6 @@ func (v *vcsCmd) ping(scheme, repo string) error { ...@@ -383,9 +383,6 @@ func (v *vcsCmd) ping(scheme, repo string) error {
// The parent of dir must exist; dir must not. // The parent of dir must exist; dir must not.
func (v *vcsCmd) create(dir, repo string) error { func (v *vcsCmd) create(dir, repo string) error {
for _, cmd := range v.createCmd { for _, cmd := range v.createCmd {
if strings.Contains(cmd, "submodule") {
continue
}
if err := v.run(".", cmd, "dir", dir, "repo", repo); err != nil { if err := v.run(".", cmd, "dir", dir, "repo", repo); err != nil {
return err return err
} }
...@@ -396,9 +393,6 @@ func (v *vcsCmd) create(dir, repo string) error { ...@@ -396,9 +393,6 @@ func (v *vcsCmd) create(dir, repo string) error {
// download downloads any new changes for the repo in dir. // download downloads any new changes for the repo in dir.
func (v *vcsCmd) download(dir string) error { func (v *vcsCmd) download(dir string) error {
for _, cmd := range v.downloadCmd { for _, cmd := range v.downloadCmd {
if strings.Contains(cmd, "submodule") {
continue
}
if err := v.run(dir, cmd); err != nil { if err := v.run(dir, cmd); err != nil {
return err return err
} }
...@@ -445,9 +439,6 @@ func (v *vcsCmd) tagSync(dir, tag string) error { ...@@ -445,9 +439,6 @@ func (v *vcsCmd) tagSync(dir, tag string) error {
if tag == "" && v.tagSyncDefault != nil { if tag == "" && v.tagSyncDefault != nil {
for _, cmd := range v.tagSyncDefault { for _, cmd := range v.tagSyncDefault {
if strings.Contains(cmd, "submodule") {
continue
}
if err := v.run(dir, cmd); err != nil { if err := v.run(dir, cmd); err != nil {
return err return err
} }
...@@ -456,9 +447,6 @@ func (v *vcsCmd) tagSync(dir, tag string) error { ...@@ -456,9 +447,6 @@ func (v *vcsCmd) tagSync(dir, tag string) error {
} }
for _, cmd := range v.tagSyncCmd { for _, cmd := range v.tagSyncCmd {
if strings.Contains(cmd, "submodule") {
continue
}
if err := v.run(dir, cmd, "tag", tag); err != nil { if err := v.run(dir, cmd, "tag", tag); err != nil {
return err return err
} }
......
...@@ -197,6 +197,7 @@ func TestGetSubmodules(t *testing.T) { ...@@ -197,6 +197,7 @@ func TestGetSubmodules(t *testing.T) {
tg.setenv("GOPATH", tg.path(".")) tg.setenv("GOPATH", tg.path("."))
tg.run("get", "-d", "github.com/rsc/go-get-issue-12612") tg.run("get", "-d", "github.com/rsc/go-get-issue-12612")
tg.run("get", "-u", "-d", "github.com/rsc/go-get-issue-12612") tg.run("get", "-u", "-d", "github.com/rsc/go-get-issue-12612")
tg.mustExist(tg.path("src/github.com/rsc/go-get-issue-12612/vendor/golang.org/x/crypto/.git"))
} }
func TestVendorCache(t *testing.T) { func TestVendorCache(t *testing.T) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment