只要我在master
分支上,此代码就可以工作:
main.go:
package main
import (
datemodlocal "192.168.0.12/gitrepo/go-module-test-dateutil.git"
stringmodlocal "192.168.0.12/gitrepo/go-module-test-stringutil.git"
"fmt"
"github.com/dwschulze/go-module-test-dateutilmod"
"github.com/dwschulze/go-module-test-stringutilmod"
)
func main() {
fmt.Println("github: " + stringmod.ToUpperCase("test"))
fmt.Println("github: " + datemod.GetTime().String())
fmt.Println("local: " + stringmodlocal.ToUpperCase("test"))
fmt.Println("local: " + datemodlocal.GetTime().String())
}
go.mod:
module module-driver
require (
192.168.0.12/gitrepo/go-module-test-dateutil.git v0.0.1
192.168.0.12/gitrepo/go-module-test-stringutil.git v0.0.1
github.com/dwschulze/go-module-test-dateutilmod v0.0.1
github.com/dwschulze/go-module-test-stringutilmod v0.0.1
)
go 1.15
我需要使用分支dev2
进行开发。 godocs并未在go.mod
中显示对导入路径或require语句需要执行的操作。如果我将导入语句更改为:
datemodlocal "192.168.0.12/gitrepo/go-module-test-dateutil.git@dev2"
我得到:
$ go run main.go
package command-line-arguments
imports 192.168.0.12/gitrepo/go-module-test-dateutil.git@dev2: can only use path@version syntax with go get
如果我将@dev2
移到go.mod
中的require语句中
192.168.0.12/gitrepo/go-module-test-dateutil.git@dev2 v0.0.1
我明白了
$ go run main.go
go: 192.168.0.12/gitrepo/go-module-test-dateutil.git@dev2@v0.0.1: unrecognized import path "192.168.0.12/gitrepo/go-module-test-dateutil.git@dev2": https fetch: Get "https://192.168.0.12/gitrepo/go-module-test-dateutil.git@dev2?go-get=1": dial tcp 192.168.0.12:443: connect: connection refused
该错误消息显示https
,这很奇怪,因为在我的~/.gitconfig
中
[url "dean@192.168.0.12:"] insteadOf = https://192.168.0.12/
设置GOPRIVATE
无效。如果将@dev2
放在两个地方,都会得到相同的错误消息。
godocs并未显示任何有效的.go
和go.mod
文件必须包含什么才能在master
以外的分支上使用模块的任何示例。我认为模块必须在任何分支上都可以工作,因为开发通常是在master
以外的分支上进行的。
有人有一个.go
文件和一个go.mod
在非master分支上工作的有效示例吗?
答案 0 :(得分:-4)
Go的工具没有快照,开发或移动依赖的概念。依赖关系是固定的,尝试通过go get
绕开分支来避免这种情况会导致更多问题。
如果您有移动依赖项:
replace
指令,使该依赖项指向它的本地副本。git pull
进行访问。如果您有无法使用的git服务器:
如果您的VCS服务器不提供https://golang.org/pkg/cmd/go/#hdr-Remote_import_paths中所述的元标记,则必须使用replace
指令并通过VCS手动管理本地副本。
在任何情况下:如https://golang.org/pkg/cmd/go/#hdr-Remote_import_paths中所述,格式为“ 192.168.0.12/gitrepo/go-module-test-stringutil.git”(带.git后缀)的导入路径是错误的:如果“ gitrepo”实际上是存储库,则“ .git”应转到“ 192.168.0.12/gitrepo.git/go-module-test-stringutil”。