Git等同于带有模板的“汞日志”?

时间:2019-02-22 09:24:55

标签: git mercurial versioning

我找到了一种方法,可以使用带有模板的hg log从带有适当标签的Mercurial存储库中生成符合semver的版本字符串。看起来像这样:

hg log -r . --template "{latesttag('re:^[vV]\d+\.\d+\.\d+') % '{node}|{tag}.{distance}|{tag}{ifeq(distance, '1', '', '-build{distance}')}{ifeq(branch, 'default', '', '+{branch}')}'}"

这将返回三件事:与标记模式匹配的提交的修订ID,与.NET System.Version兼容的版本字符串以及与semver 2.0兼容的版本字符串,如果大于,则使用标记距离作为预发布信息1(即,在标记修订后进行更多实际的提交),并且如果分支名称是除“ default”(例如“ hotfix-JIRA-123”)以外的任何其他值,则使用分支名称作为构建元数据。

我不介意无法使用一个hg log命令来格式化所有这些格式,只要我可以随后获取所有用于格式化的值即可。这只是Mercurial的肉汁。

但是我唯一能在git中做到这一点的方法是使用多个命令,如下所示:

REM Returns the tag, tag distance, and node ID "abbreviated" to 40 chars (i.e. not abbreviated, LOLZ)
git describe --tags --long --match "v*.*.*" --abbrev=40
REM Returns the branch name
git rev-parse --abbrev-ref HEAD

如果git describe可以以其他任何方式另外返回分支名称,那将解决我的问题,但实际上我已经看不到git中的任何一个命令将返回所有这些值,因为它已经过滤为标记了像这些命令一样进行修订。

我可以继续做下去,我只是想知道我是否缺少某些东西。

0 个答案:

没有答案