[!exec:git] skip [!exec:hg] skip [short] skip env GOFLAGS='-n -buildvcs' # Create a root module in a root Git repository. mkdir root cd root go mod init example.com/root exec git init # Nesting repositories in parent directories are ignored, as the current # directory main package, and containing main module are in the same repository. # This is an error in GOPATH mode (to prevent VCS injection), but for modules, # we assume users have control over repositories they've checked out. mkdir hgsub cd hgsub exec hg init cp ../../main.go main.go ! go build stderr '^error obtaining VCS status: main module is in repository ".*root" but current directory is in repository ".*hgsub"$' stderr '^\tUse -buildvcs=false to disable VCS stamping.$' go build -buildvcs=false go mod init example.com/root/hgsub go build cd .. # It's an error to build a package from a nested Git repository if the package # is in a separate repository from the current directory or from the module # root directory. mkdir gitsub cd gitsub exec git init exec git config user.name 'J.R.Gopher' exec git config user.email 'gopher@golang.org' cp ../../main.go main.go ! go build stderr '^error obtaining VCS status: main module is in repository ".*root" but current directory is in repository ".*gitsub"$' go build -buildvcs=false go mod init example.com/root/gitsub exec git commit --allow-empty -m empty # status commands fail without this go build rm go.mod cd .. ! go build ./gitsub stderr '^error obtaining VCS status: main package is in repository ".*gitsub" but current directory is in repository ".*root"$' go build -buildvcs=false -o=gitsub${/} ./gitsub -- main.go -- package main func main() {}