打印当前汞修订散列 Hash? ?

在 Mercurial 中提取当前修订散列的方法是否比

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

我的 webapp 部署脚本的一部分“标记”了上传的应用程序 tarball 及其唯一的修订散列。

57096 次浏览
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的存在,最具体的非推荐命令只能在需要简洁的情况下打印修订信息(正如问题所暗示的那样) :

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

或者用于惟一的长形式 hash:

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

-b .branch(.)(点代表分行名称) 指现时的工作目录分行-r .表示目前的工作目录修订版,即 hg help revsetshg help revisions中的 记录在案

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

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

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

如果使用 TortoiseHg,右键单击 Workbench 中的修订行并选择“ Copy hash”(按照 文件)。

enter image description here