mirror of
https://github.com/golang/go
synced 2024-11-27 05:01:19 -07:00
cmd/go/internal/modload: suppress the 'go mod init' hint for GOROOT more aggressively
Previously, we suppressed a `to create a module there, run: … go mod init' warning only if the config file itself (such as .git/config) was found in GOROOT. However, our release tarballs don't include the .git/config, so that case was not encountered, and the warning could occur based on a config file found in some parent directory (outside of GOROOT entirely). Instead, skip the directory walk completely if the working directory is anywhere in GOROOT. Fixes #34191 Change-Id: I9f774901bfbb53b700407c4882f37d6339d023fe Reviewed-on: https://go-review.googlesource.com/c/go/+/223340 Run-TryBot: Bryan C. Mills <bcmills@google.com> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
cbcb031fe8
commit
e2a9ea035d
@ -624,13 +624,14 @@ func findAltConfig(dir string) (root, name string) {
|
||||
panic("dir not set")
|
||||
}
|
||||
dir = filepath.Clean(dir)
|
||||
if rel := search.InDir(dir, cfg.BuildContext.GOROOT); rel != "" {
|
||||
// Don't suggest creating a module from $GOROOT/.git/config
|
||||
// or a config file found in any parent of $GOROOT (see #34191).
|
||||
return "", ""
|
||||
}
|
||||
for {
|
||||
for _, name := range altConfigs {
|
||||
if fi, err := os.Stat(filepath.Join(dir, name)); err == nil && !fi.IsDir() {
|
||||
if rel := search.InDir(dir, cfg.BuildContext.GOROOT); rel == "." {
|
||||
// Don't suggest creating a module from $GOROOT/.git/config.
|
||||
return "", ""
|
||||
}
|
||||
return dir, name
|
||||
}
|
||||
}
|
||||
|
17
src/cmd/go/testdata/script/mod_convert_git.txt
vendored
17
src/cmd/go/testdata/script/mod_convert_git.txt
vendored
@ -18,6 +18,23 @@ cd $GOROOT
|
||||
! go list .
|
||||
! stderr 'go mod init'
|
||||
|
||||
# We should also not suggest creating a go.mod file in $GOROOT if its own
|
||||
# .git/config has been stripped away and we find one in a parent directory.
|
||||
# (https://golang.org/issue/34191)
|
||||
env GOROOT=$WORK/parent/goroot
|
||||
cd $GOROOT
|
||||
! go list .
|
||||
! stderr 'go mod init'
|
||||
|
||||
cd $GOROOT/doc
|
||||
! go list .
|
||||
! stderr 'go mod init'
|
||||
|
||||
-- $WORK/test/.git/config --
|
||||
-- $WORK/test/x/x.go --
|
||||
package x // import "m/x"
|
||||
-- $WORK/parent/.git/config --
|
||||
-- $WORK/parent/goroot/README --
|
||||
This directory isn't really a GOROOT, but let's pretend that it is.
|
||||
-- $WORK/parent/goroot/doc/README --
|
||||
This is a subdirectory of our fake GOROOT.
|
||||
|
Loading…
Reference in New Issue
Block a user