是否有更好的方法在Mercurial中提取当前版本哈希而不是
hg log -l1|grep changeset|cut -d: -f3
我的部分webapp部署脚本使用其唯一的修订哈希“标记”上传的应用程序tarball。
答案 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)。