我正在寻找用go创建可复制的版本。对于单个项目,我们使用滑行。
因此,例如,我使用:
glide get github.com/stretchr/testify
修复“证明”包的版本。但是,这不适用于工具。例如:
glide install github.com/tebeka/go2xunit
返回成功,但实际上未安装go2xunit,因此我必须使用:
go get github.com/tebeka/go2xunit
它将 go2xunit 安装到 $ GOPATH / bin 。
问:如何修复go2xunit等工具的版本?
我还注意到,glide表示改用dep,而 dep表示golang已脱离其实现,可能最终会使用基于vgo的东西。有大量的依赖管理工具可以使用,也许其中一个鲜为人知的工具支持此功能?
如果与之相关,我使用Debian9提供的go 1.7.4。
使用go模块的go1.11解决方案是创建一个伪造的工具包。您可以如下创建一个 tools.go 文件:
// +build tools package tools import ( _ "github.com/tebeka/go2xunit" )
+ build tools是一个神奇的注释,它阻止构建软件包。
>go mod init tools
将为假 工具 包创建一个 go.mod 文件 __
>go install github.com/tebeka/go2xunit
将如下安装go2xunit并更新go.mod。
module tools require github.com/tebeka/go2xunit v1.4.8 // indirect
现在,如果您将来运行 go install github.com/tebeka/go2xunit (对于干净的构建说),它的版本将由go.mod固定为v1.4。
对于1.11之前的版本,要使用的工具是retool。它是这样的:
引导程序:
go get github.com/twitchtv/retool
添加工具:
retool add github.com/jteeuwen/go-bindata/go-bindata origin/master
使用工具:
retool do go-bindata -pkg testdata -o ./testdata/testdata.go ./testdata/data.json
对此的支持可能是针对go 1.12的路线图(https://github.com/golang/go/issues/27653)