我想将当前的 git 修订号添加到构建的二进制文件中,go build以便我可以做一些事情,比如./mybinary --revision查看它是从哪个修订版构建的(通常用于部署后的故障排除)。显然,我不能将修订号放入源代码中,因为这会用新的修订版本更改源代码。我想知道是否有其他方法可以做到这一点?或者你认为这只是一个坏主意?如果是这样,在构建的二进制文件与其源版本之间建立关系的推荐方法是什么?对于分布式版本控制系统,版本号似乎不是一个好主意。
3 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
如果您可以将 git 修订版放入 $VERSION 并version在主包中有一个名为(类型字符串)的变量,则可以在构建期间使用以下命令设置它:
#!/bin/sh
VERSION=`git rev-parse --short HEAD`
go build -ldflags "-X main.version=$VERSION" myfile.go
RISEBY
TA贡献1856条经验 获得超5个赞
我会用一个version.go
文件创建一个文件,var version string
然后在调用之前处理它并在调用go build
之后重置它。换句话说,go 不支持任何类型的代码生成,所以你需要依靠外部的东西来做到这一点。
手掌心
TA贡献1942条经验 获得超3个赞
对于所有和任何版本的 Git 代码,获取任何变更集的标识字符串的最明显方法(而我将在--revision
选项上显示此字符串的任务留给您)是
使用(至少偶尔)标签
git describe(带有相关选项)在构建阶段
- 3 回答
- 0 关注
- 225 浏览
添加回答
举报
0/150
提交
取消