# golang.org/issue/34055 # Starting in Go 1.25, go-import meta tag support an optional subdirectory paramater. # The corresponding go-import meta tag is specified as # # and contains the module in vcs-test.golang.org/git/gitreposubdir/foo/subdir. # See testdata/vcstest/go/gitreposubdir.txt and testdata/vcstest/git/gitreposubdir.txt [short] skip 'builds a go program' [!git] skip env GO111MODULE=on env GOPROXY=direct env GOSUMDB=off # Get the module without having to specify the subdir. cd a cp go.mod go.mod.orig go get vcs-test.golang.org/go/gitreposubdir@v1.2.3 exists $GOPATH/pkg/mod/vcs-test.golang.org/go/gitreposubdir@v1.2.3 go get vcs-test.golang.org/go/gitreposubdirv2/v2@v2.0.0 exists $GOPATH/pkg/mod/vcs-test.golang.org/go/gitreposubdirv2/v2@v2.0.0 # Import the module without having to specify the subdir. cp go.mod.orig go.mod go mod tidy # Run main.go which has the import. go run main.go stdout 'hello, world' stdout 'hello, world v2' # Fail if subdir is specified in get. ! go get vcs-test.golang.org/go/gitreposubdir/foo/subdir stderr 'module vcs-test.golang.org/go/gitreposubdir@upgrade found \(v1.2.3\), but does not contain package vcs-test.golang.org/go/gitreposubdir/foo/subdir' ! go get vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir stderr 'module vcs-test.golang.org/go/gitreposubdirv2/v2@upgrade found \(v2.0.0\), but does not contain package vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir' # Fail if subdir is specified in the import. cd ../b ! go mod tidy stderr 'module vcs-test.golang.org/go/gitreposubdir@latest found \(v1.2.3\), but does not contain package vcs-test.golang.org/go/gitreposubdir/foo/subdir' stderr 'module vcs-test.golang.org/go/gitreposubdirv2/v2@latest found \(v2.0.0\), but does not contain package vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir' -- a/main.go -- package main import ( "fmt" "vcs-test.golang.org/go/gitreposubdir" "vcs-test.golang.org/go/gitreposubdirv2/v2" ) func main() { fmt.Println(greeter.Hello()) fmt.Println(greeterv2.Hello()) } -- a/go.mod -- module example go 1.24 -- b/main.go -- package main import ( "fmt" "vcs-test.golang.org/go/gitreposubdir/foo/subdir" "vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir" ) func main() { fmt.Println(greeter.Hello()) fmt.Println(greeterv2.Hello()) } -- b/go.mod -- module example go 1.24