去 dep 和 fork 库

Go dep and forks of libraries

我正在尝试了解如何使用 Golang 和 fork。情况如下,我正在写一个依赖库 github.com/other/some_dependency 的库 project,它不是我的。

因为 some_dependency 缺少一些我需要的方法,所以我将它分叉到 github.com/me/some_dependency。但是,我不能只做 go get github.com/me/some_dependency,库会引用自身,所以它会中断。

在这个article中他们给出了一个可能的解决方案:

 go get github.com/other/some_dependency
 cd $GOPATH/src/github.com/other/some_dependency
 git remote add fork git@github.com:me/some_dependency
 git rebase fork/master

现在,这充其量只是 hacky。从库的代码中无法知道依赖项来自不同的 repo。 go get 我的图书馆的任何人都无法让它发挥作用。

因为 dep 应该是官方的依赖管理器。我找到了修复版本的方法:

dep ensure -add github.com/foo/bar@v1.0.0

但我找不到如何设置不同的遥控器。有可能做到吗? 例如,在 Node.js 和 npm 中它是 dead simple:

npm install git+https://git@github.com/visionmedia/express.git

如果您查看 help,您会看到:

<import path>[:alt source URL][@<constraint>]

因此,要从位置 github.com/fork/bar 添加 github.com/foo/bar,您必须这样添加:

dep ensure -add github.com/foo/bar:github.com/fork/bar

源位置将作为 source 属性添加到 Gopkg.toml

dependency rules constraint and override

的 Gopkg 文档