为了账号安全,请及时绑定邮箱和手机立即绑定

Go:如何将 git 修订版添加到构建的二进制文件中?

Go:如何将 git 修订版添加到构建的二进制文件中?

Go
肥皂起泡泡 2021-06-03 21:50:44
我想将当前的 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


查看完整回答
反对 回复 2021-06-07
?
RISEBY

TA贡献1856条经验 获得超5个赞

我会用一个version.go文件创建一个文件,var version string然后在调用之前处理它并在调用go build之后重置它。换句话说,go 不支持任何类型的代码生成,所以你需要依靠外部的东西来做到这一点。


查看完整回答
反对 回复 2021-06-07
?
手掌心

TA贡献1942条经验 获得超3个赞

对于所有和任何版本的 Git 代码,获取任何变更集的标识字符串的最明显方法(而我将在--revision选项上显示此字符串的任务留给您)是

  • 使用(至少偶尔)标签

  • git describe(带有相关选项)在构建阶段


查看完整回答
反对 回复 2021-06-07
  • 3 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信