我已经习惯了Go,并试图理解它是如何工作的。
因此,我尝试从我的存储库zoonoo/go-ethereum运行测试代码,它是从原始存储库派生出来的。
当我在eth目录下运行go test .时,我得到以下错误:
eth/api.go:37:2: use of internal package not allowed
eth/api.go的第37行如下:"github.com/ethereum/go-ethereum/internal/ethapi"
这是否意味着当您派生go存储库时,您必须更改代码中所有依赖项的路径才能运行代码?
Go包系统支持存储库fork吗?
我有一个使用go模块的项目。在这里,我需要指定我依赖于一个特定的库分支(称为它),因为它有一个重要的补丁。当我运行go get -u <my_project>时,我得到了一个编译错误,这显然意味着go接受了的主代码库,而不是fork。
在此之后,我切换到go下载的目录并运行go build。然后,go获取正确版本的,编译成功。
你能告诉我发生这种情况的原因是什么以及如何修复吗?
下面是要获取的具体命令:
go get -u github.com/planetA/konk
依赖关系是"github.com/opencontainers/runc“。对于此依赖项,go.mod包
经过谷歌的多次尝试,我正在寻找让$ go get与私有存储库一起工作的方法。
第一次尝试:
$ go get -v gitlab.com/secmask/awserver-go
Fetching https://gitlab.com/secmask/awserver-go?go-get=1
https fetch failed.
Fetching http://gitlab.com/secmask/awserver-go?go-get=1
Parsing meta tags from http://gitlab.com/secmask/awserver-go?go-get=1 (status
假设您在github.com/someone/repo有一个存储库,并将其派生到github.com/you/repo。您希望使用fork而不是主repo,因此您可以执行
go get github.com/you/repo
现在,此存储库中的所有导入路径都将被“破坏”,这意味着,如果存储库中有多个通过绝对URL相互引用的包,它们将引用源,而不是fork。
有没有更好的方法将其手动克隆到正确的路径?
git clone git@github.com:you/repo.git $GOPATH/src/github.com/someone/repo