我有一個Go codegen工具,在將其構建為二進制文件時,我想在構建時使用Go工具為它的主模塊注入它自己的當前偽版本。我知道對于依賴項,我可以使用 或 找到它們的偽版本。主模塊的版本列為空。go list -m allgo list -m -f '{{ .Version }}' $MODULE我知道我可以計算出當前的偽版本:git describe --tags `git rev-list --tags --max-count=1`和:TZ=UTC git --no-pager show \ --quiet \ --abbrev=12 \ --date='format-local:%Y%m%d%H%M%S' \ --format="%cd-%h"要得到一個合理的近似值,例如:v0.3.0-20210907161133-495c072cb418在我擁有偽版本之后,我打算在構建時注入它,如下所示:go build -ldflags="-X generate.version v0.3.0-20210907161133-495c072cb418" -o mytool ./main.go但是,建議直接使用Go工具來獲取當前的偽版本,而不是我在餐巾紙上解決的一些黑客抨擊問題。關于如何做到這一點的任何建議?
1 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
偽版本的問題是,它只是VCS中特定修訂版的編碼(不僅僅是Git)。
而且,它通常用于模塊沒有 semver 標記,或者當您只需要特定修訂版(可以是分支名稱)時。
偽版本可能是指沒有語義版本標記可用的修訂版。它們可用于在創建版本標記之前測試提交,例如,在開發分支上。
因此,要擁有偽版本,首先必須參考修訂版?,F在,哪一個是最準確地描述您的項目的修訂版,這將取決于您。分支的尖端可能就足夠了,因此:master
go list -f '{{.Version}}' -m example.com/mymodule@master
請注意 語法 ,它允許您選擇特定的修訂版,因此,獲取相應的偽版本。module@version
- 1 回答
- 0 關注
- 75 瀏覽
添加回答
舉報
0/150
提交
取消