第三方库 (mgo.v2) 供应错误

Error in vendoring of third party library(mgo.v2)

我正在尝试获取 mgo.v2 当前代码库的本地副本。 https://gopkg.in/mgo.v2 says to install using go get gopkg.in/mgo.v2. I forked it from https://github.com/go-mgo/mgo/tree/v2 并尝试从 git 的 go get forked repo 安装它,但它改变了包结构(从 /src/gopkg 改变.in --> /src/github.com) 并且它没有说

src/github.com/eateshk/mgo.v2/error.go:4: "ERROR: the correct import path is gopkg.in/mgo.v2 ... " evaluated but not used

我明白这个错误,但是有什么解决办法吗?

这是分叉 go 包时的常见问题。规范或 "vanity" 导入要求代码位于指定路径中,否则它们将无法编译。唯一的解决办法是删除某处存在的 // import "gopkg.in/whatever" 评论。

您的方法还有其他问题。他们存储库中的导入将解析回原始存储库并导致各种混乱,除非您重写它们。

相反,我建议采用另一种方法。 唯一 可以将其保存在磁盘上而不会引起问题的地方是 $GOPATH/src/gopkg.in/mgo.v2。任何其他事情都会导致问题。所以:

go get gopkg.in/mgo.v2
cd $GOPATH/src/gopkg.in/mgo.v2
git remote add mine your_git_fork

现在您可以从 origin 拉取上游更改并将您的更改推送到 mine。感觉有点奇怪,但它确实是唯一一种从 fork 开始工作而不会因重写东西而造成大量额外痛苦的方法。