我已经习惯了Go,并试图了解它是如何工作的.
所以我试图从我的存储库zoonoo/go-ethereum运行测试代码,从原始存储库ethereum/go-ethereum分叉.
当我go test .在eth目录下运行时,我收到以下错误:
eth/api.go:37:2: use of internal package not allowed
Run Code Online (Sandbox Code Playgroud)
第37行eth/api.go如下: "github.com/ethereum/go-ethereum/internal/ethapi"
这是否意味着当您分叉go存储库时,您必须更改代码中所有依赖项的路径以运行代码?
Go包系统是否支持存储库fork?
克隆一个叉子
如果您希望使用InfluxDB的fork,例如您自己的fork,您仍然必须遵循上面的目录结构.但不是克隆主仓库,而是克隆你的叉子.按照以下步骤使用fork:
export GOPATH=$HOME/gocodez
mkdir -p $GOPATH/src/github.com/influxdb
cd $GOPATH/src/github.com/influxdb
git clone git@github.com:<username>/influxdb
Run Code Online (Sandbox Code Playgroud)
保留目录结构$ GOPATH/src/github.com/Influxdb是必要的,以便Go导入正常工作.
用项目替换InfluxDB名称/ URL,同样的想法也适用.
在您的情况下,GitHub fork仅用于将您的贡献推回给它,并从中发出Pull请求.
它不会作为go get工作源,因为这些包与您的GitHub不匹配repo URL.
这是因为go内部的包只能被同根目录下的包导入。这有点像java中的包私有类。如果您想编辑代码而不必重命名所有包导入,您需要维护包所需的相同文件夹结构,因此如果github.com/zoonoo/go-ethereum在您的$GOPATH 中,将目录重命名为 github.com/ethereum/go-ethereum或创建符号链接并从链接目录工作。
| 归档时间: |
|
| 查看次数: |
6859 次 |
| 最近记录: |