去图书馆的dep and fork

时间:2018-03-25 11:27:03

标签: go dependency-management

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

因为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

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

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

1 个答案:

答案 0 :(得分:2)

如果你看help,你会看到:

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

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

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

源位置将添加为source中的Gopkg.toml属性。

dependency rules constraint and override

的Gopkg文档