打印当前的Mercurial修订哈希?

在Mercurial中提取当前修订哈希是否有更好的方法?

hg log -l1|grep changeset|cut -d: -f3

我的webapp部署脚本的一部分使用其独特的修订哈希“上传”应用程序tarball。

尝试:

 hg id -i 

例:

 $ hg id -i adc56745e928 
 hg --debug id -i 

这将输出长散列,如果有未提交的更改,则加一个加号。

你可以使用 – 父命令模板,我用它来获得长哈希:

 hg parent --template '{node}' 

总结答案和答案,似乎这是打印当前版本的唯一 (而不是简写)标识符的最佳方式:

 hg log -l 1 --template '{node}\n' -r . 
 hg log -l 1 --template '{node|short}\n' 

请参阅文档 “模板的基础知识”和以下内容。

由于--template的存在,最具体的非DEPRECATED命令可以只打印修订版本信息(如问题所暗示的那样):

hg log -l 1 -b . -T '{rev}:{node|short}\n'

或者为独特的散列forms:

hg log -l 1 -r . -T '{node}\n'

-b .branch(.) (分支名称的点) 表示当前工作目录分支和-r . 表示当前的工作目录修订版,这在hg help revsetshg help revisions

注意如果有一个未提交的合并 , (点)只显示工作组的两个父母的第一个父母 。

正如别人指出的那样,不要使用log -l

使用hg log -r . 得到详细的信息,而不是使用输出有限的hg id ,它不支持模板。 你也可以创build一个小的别名,如here = log -r .hg here使用hg here 。 如果你只想使用hg log -r . --template '{node}\n' hg log -r . --template '{node}\n'