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

查找当前主模块的伪版本

查找当前主模块的伪版本

Go
守着星空守着你 2022-10-04 18:45:23
我有一个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 标记,或者当您只需要特定修订版(可以是分支名称)时。

伪版本可能是指没有语义版本标记可用的修订版。它们可用于在创建版本标记之前测试提交,例如,在开发分支上。

因此,要拥有伪版本,首先必须参考修订版。现在,哪一个是最准确地描述您的项目的修订版,这将取决于您。分支的尖端可能就足够了,因此:master

go list -f '{{.Version}}' -m example.com/mymodule@master

请注意 语法 ,它允许您选择特定的修订版,因此,获取相应的伪版本。module@version


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

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