如何做到“去获取”一个github仓库的特定标签
我试图编译InfluxDB数据库(版本v0.8.8)使用go get github.com/influxdb/influxdb
但是,这拉主分支,我需要v0.8.8
标记。
我试图做到: go get github.com/influxdb/influxdb/releases/tag/v0.8.8
但这失败说无法find。
我也尝试go get
GOPATH/src/github...
master分支,然后使用GOPATH/src/github...
中的git
手动检查标签,以便设置对应的版本。
使用最后一种方法的问题是,当我尝试拉取依赖关系时, go get -u -f ./...
它试图在主分支中find它们,而其中一些分支不存在于主分支上。 。
TL; DR :执行go get
一个特定的github标签,并拉取正确的依赖关系。
使用go get
工具是不可能的。 相反,您需要使用第三方的包pipe理工具,或者为您希望pipe理更细粒度的包创build您自己的叉子。
说到一个在Google工作的人,他承认这个问题/要求,他说,他的团队使用的服务很笨重,他们可能很快就会用官方工具来解决这个问题。
阅读更多:
- 第三方包pipe理工具的参考
- golang团队的博客文章讨论了实施vendoring的方法
在Go中供应
Vendor已经从1.6版本的实验版本中解放出来 (在这篇文章最初编写之后),使得使用第三方工具的特定标签/版本的软件包变得更加容易。 go get
仍然没有function来获取特定的标签或版本。
更多关于如何工作的原理: 了解和使用供应商文件夹
我已经成功了:
- 运行没有标签的get命令 – 它应该克隆主分支。
- 移动到克隆目录并签出您想要的标签或分支。
- 再次运行go get命令,它应该处理签出分支上的命令。
我有一个(有点hackish,但工作)的方法来解决这个问题,至less对于git仓库:作为get'ed包是普通的源代码控制库,可以检查出标签使用常规的git工具(可以使用git从命令行,我正在使用Atlassian SourceTree)。
为了与我的队友分享我的软件包configuration,我已经把git仓库作为我的GOPATH了 。 然后我把所有包(至less是我想要这样pipe理的包)添加到这个回购作为git子模块。 这就要求你将exo文件夹移开,重新添加为git子模块,不要混淆git。 这个过程有点繁琐,但certificate是值得的麻烦:
我现在可以提交并推送到我的GOPATH回购每时每刻我使用一个新的去包。 当我的队友从这个仓库中取出一个git子模块更新(或者只是通过SoureTree更新,这会自动完成),他们的软件包版本会和我的标签签出。
当然,这只适用于Git源代码控制下的软件包…
maven golang插件允许在GET期间使用分支,标签和修订版本,可以使用GIT存储库查看这种情况下的testing