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

cmd/go: report correct directory for 'no version control'

The scan starts at the directory we care about and works
backward to the GOPATH root. The error should say the
original directory name, not the name of the GOPATH root.

Fixes #6175.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/13366050
This commit is contained in:
Russ Cox 2013-09-10 15:28:29 -04:00
parent 6034406eae
commit b99fdb2a11
2 changed files with 14 additions and 1 deletions

View File

@ -139,6 +139,18 @@ if ! ./testgo test ./testdata/testimport/*.go; then
ok=false ok=false
fi fi
TEST version control error message includes correct directory
export GOPATH=$(pwd)/testdata/shadow/root1
if ./testgo get -u foo 2>testdata/err; then
echo "go get -u foo succeeded unexpectedly"
ok=false
elif ! grep testdata/shadow/root1/src/foo testdata/err >/dev/null; then
echo "go get -u error does not mention shadow/root1/src/foo:"
cat testdata/err
ok=false
fi
unset GOPATH
# Test that without $GOBIN set, binaries get installed # Test that without $GOBIN set, binaries get installed
# into the GOPATH bin directory. # into the GOPATH bin directory.
TEST install into GOPATH TEST install into GOPATH

View File

@ -321,6 +321,7 @@ func vcsForDir(p *Package) (vcs *vcsCmd, root string, err error) {
return nil, "", fmt.Errorf("directory %q is outside source root %q", dir, srcRoot) return nil, "", fmt.Errorf("directory %q is outside source root %q", dir, srcRoot)
} }
origDir := dir
for len(dir) > len(srcRoot) { for len(dir) > len(srcRoot) {
for _, vcs := range vcsList { for _, vcs := range vcsList {
if fi, err := os.Stat(filepath.Join(dir, "."+vcs.cmd)); err == nil && fi.IsDir() { if fi, err := os.Stat(filepath.Join(dir, "."+vcs.cmd)); err == nil && fi.IsDir() {
@ -337,7 +338,7 @@ func vcsForDir(p *Package) (vcs *vcsCmd, root string, err error) {
dir = ndir dir = ndir
} }
return nil, "", fmt.Errorf("directory %q is not using a known version control system", dir) return nil, "", fmt.Errorf("directory %q is not using a known version control system", origDir)
} }
// repoRoot represents a version control system, a repo, and a root of // repoRoot represents a version control system, a repo, and a root of