[英]How to do "go get" on a specific tag of a github repository
我正在尝试使用go get github.com/influxdb/influxdb
编译 InfluxDB 数据库(版本 v0.8.8)
但这会拉动主分支,我需要v0.8.8
标签。
我试图这样做: go get github.com/influxdb/influxdb/releases/tag/v0.8.8
但这失败说无法找到。
我还尝试对 master 分支进行常规go get
,然后在GOPATH/src/github...
中使用git
手动检出标签以设置正确版本。
使用最后一种方法的问题是,当我尝试使用go get -u -f ./...
拉取依赖项时,它试图在 master 分支中找到它们,而其中一些在 master 分支上不存在.. .
TL;DR :在特定的 github 标签上执行go get
,并拉取正确的依赖项。
无法使用go get
工具。 相反,您需要使用第三方 go 包管理工具或为您希望管理更细粒度的包创建自己的分支。
与一位在 Google 工作的人交谈,他承认了这个问题/要求,他说他的团队使用的 vendoring 很庞大,他们可能很快会用官方工具解决它。
阅读更多:
Go 1.6 中的供应商
Vendoring 已经从 go 1.6 中的实验性版本中发布(在这篇文章最初写完之后),这使得使用第三方工具使用特定标签/包版本的过程变得更加容易。 go get
仍然没有获取特定标签或版本的功能。
有关 vendoring 如何工作的更多信息:了解和使用供应商文件夹
Go 1.11 中的模块
Go 1.11 发布了一个名为 modules 的实验性功能来改进依赖管理,他们希望在 Go 1.12 中将其发布为稳定的:关于 Go 1.11 中模块的信息
go mod
现在可用。
对于那些需要构建特定标签的二进制文件的人,这是我的方法:
mkdir temp
cd temp
go mod init local/build # or `go mod init .` before go 1.13
go get -d -v github.com/nsqio/nsq@v1.1.0
mkdir bin
go build -o bin/nsqd.exe github.com/nsqio/nsq/apps/nsqd
解释:
nsqd
。go mod init .
在当前目录中创建一个go.mod
文件,它允许使用带有修订/标签的go get
。 (见这个链接)-d
表示“仅下载”,如果您想直接安装,请省略此标志和此行下方的构建命令。-v
意思是“冗长”。bin/nsqd.exe
替换为bin/nsqd
。 下载的模块存储在%GOPATH%\\pkg\\mod
。 如果您不想污染您的GOPATH
目录,请创建一个新目录并将您的GOPATH
设置GOPATH
目录。
我在这方面取得了成功:
这个问题早于Go Modules ,但为了将来参考,Go 1.11 中获取特定版本的正确过程是这样的:
go get github.com/influxdb@[version]
或者获取特定的 git 标签:
go get github.com/influxdb@[gitref]
我有一种(有点 hackish,但有效)方法来解决这个问题,至少对于 git 存储库:因为 go get'ed 包是普通的源代码控制存储库,所以可以使用普通的 git 工具检查标签(可以从命令行使用 git ,我正在使用 Atlassian SourceTree)。
为了与我的队友分享我的包配置,我在我的 GOPATH 中创建了一个git 存储库。 然后我将所有包(至少是我想以这种方式管理的包)作为 git 子模块添加到这个 repo 中。 这需要您将现有的 repo 文件夹移开,并将它们重新添加为 git 子模块,以免混淆 git。 这个过程有点乏味,但事实证明是值得的:
我现在可以在每次使用新的 go 包时提交并推送到我的 GOPATH-repo。 当我的队友从这个 repo 中拉取并发出 git 子模块更新(或简单地通过 SoureTree 更新,它会自动执行此操作)时,他们的包版本将在与我的相同的标签上签出。
当然,这只适用于 git 源代码控制下的包......
maven golang 插件允许在 GET 期间使用分支、标记和修订,您可以使用 GIT 存储库查看它对此类情况的测试
要更新 GO api 的版本,请按照以下步骤操作。
例如,我想将以下 api 更新为特定标签。
实际回购: https : //github.com/fraugster/parquet-go
标签: https : //github.com/fraugster/parquet-goreleases/tag/v0.5.0
转到您的根目录
go get -u https://github.com/fraugster/parquet-go@v0.5.0
`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.