在 Mercurial 中提取当前修订散列的方法是否比
hg log -l1|grep changeset|cut -d: -f3
?
我的 webapp 部署脚本的一部分“标记”了上传的应用程序 tarball 及其唯一的修订散列。
hg log -l 1 --template '{node|short}\n'
请参阅 那些文件,“模板的基本知识”及后面的段落。
试试:
hg id -i
例如:
$ hg id -i adc56745e928
hg --debug id -i
这将输出长散列,如果有未提交的更改,则加上一个加号。
您可以使用父命令的—— template,我使用它来获得长散列:
hg parent --template '{node}'
总结答案和他们的反应,似乎这是 打印 独一无二(不简单)标识符的最佳方法 目前版本:
hg log -l 1 --template '{node}\n' -r .
由于 --template的存在,最具体的非推荐命令只能在需要简洁的情况下打印修订信息(正如问题所暗示的那样) :
--template
hg log -l 1 -b . -T '{rev}:{node|short}\n'
或者用于惟一的长形式 hash:
hg log -l 1 -r . -T '{node}\n'
-b .或 branch(.)(点代表分行名称) 指现时的工作目录分行和 -r .表示目前的工作目录修订版,即 hg help revsets和 hg help revisions中的 记录在案。
-b .
branch(.)
-r .
hg help revsets
hg help revisions
注意,如果有一个 未提交合并,则 .(点)只显示工作组的两个父母的 第一个家长。
.
正如其他人指出的,不要使用 log -l。
log -l
使用 hg log -r .获取详细信息,而不是使用输出有限且不支持模板的 hg id。您还可以创建一个类似于 here = log -r .的小别名,并使用 hg here。如果只想使用哈希表,请使用 hg log -r . --template '{node}\n'。
hg log -r .
hg id
here = log -r .
hg here
hg log -r . --template '{node}\n'
如果使用 TortoiseHg,右键单击 Workbench 中的修订行并选择“ Copy hash”(按照 文件)。