我试图了解如何使用Golang和forks。情况如下,我在写一个project依赖于library的库github.com/other/some_dependency,这不是我的。
project
github.com/other/some_dependency
由于some_dependency缺少我需要的一些方法,因此将其分叉到github.com/me/some_dependency。但是,我不能只是这样做goget github.com/me/some_dependency,库引用了自己,所以它坏了。
some_dependency
github.com/me/some_dependency
goget github.com/me/some_dependency
在本文中,他们提供了可能的解决方案:
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。从库代码中无法得知依赖项来自其他存储库。任何go get使用我的图书馆的人都无法使其正常运行。
go get
由于dep有望成为正式的依赖管理器。我发现了如何修复版本:
dep ensure -add github.com/foo/bar@v1.0.0
但是我找不到如何设置其他遥控器。有可能做到吗?例如,在带有npm的Node.js中,它非常简单:
npm install git+https://git@github.com/visionmedia/express.git
如果您查看,help则会看到以下内容:
help
<import path>[:alt source URL][@<constraint>]
因此,github.com/foo/bar要从位置添加,github.com/fork/bar您必须像这样添加它:
github.com/foo/bar
github.com/fork/bar
dep ensure -add github.com/foo/bar:github.com/fork/bar
源位置将作为source属性添加到中Gopkg.toml。
source
Gopkg.toml
Gopkg文档依赖关系规则约束和覆盖