打印当前的Mercurial修订哈希?

时间:2010-03-21 02:30:52

标签: hash mercurial revision

是否有更好的方法在Mercurial中提取当前版本哈希而不是

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

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

8 个答案:

答案 0 :(得分:184)

尝试:

hg id -i

示例:

$ hg id -i
adc56745e928

答案 1 :(得分:40)

hg --debug id -i

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

答案 2 :(得分:20)

您可以在父命令中使用--template,我使用它来获取长哈希:

hg parent --template '{node}'

答案 3 :(得分:14)

总结答案及其回答,似乎就是这样 打印唯一(非简短格式)标识符的最佳方法 当前版本:

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

答案 4 :(得分:8)

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

请参阅the docs,段落“模板的基础知识”及其后续内容。

答案 5 :(得分:3)

由于--template的存在,最具体的非DEPRECATED命令只能在需要简明时打印修订信息(如问题所暗示的那样):

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

或者对于唯一的长形式哈希:

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

-b .branch(.)(分支名称为点)means the current working directory branch-r .表示当前工作目录修订版,hg help revsets位于{{1} }和documented

请注意,如果有hg help revisions,则.(点)仅显示工作组中两位家长的uncommitted merge

答案 6 :(得分:1)

正如其他人所指出的,不要使用log -l

使用hg log -r .获取详细信息,而不是使用输出有限且不支持模板的hg id。您还可以创建一个像here = log -r .这样的小别名并使用hg here。如果您只想使用哈希hg log -r . --template '{node}\n'

答案 7 :(得分:0)

如果使用TortoiseHg,请右键单击工作台中的修订行,然后选择“复制哈希”(按照documentation)。

enter image description here