我想將當前的 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 關注
- 259 瀏覽
添加回答
舉報
0/150
提交
取消