我试图了解如何使用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
答案 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
属性。