打印当前的Mercurial修订哈希?


124

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

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

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


2
请注意,它hg log -l 1为您提供了最新的变更集,而不一定是您当前更新到的变更集!-f标志将hg日志输出限制为当前工作目录的祖先,因此hg log -f -l1更接近于您想要的。
防水

Answers:


196

尝试:

hg id -i

例:

$ hg id -i
adc56745e928

22
如果您想使用完整的哈希值,如果人们错过了以下解决方案:hg --debug id -i如果要使用模板支持,请hg parent --template '{node}' 不要使用hg log -l 1,它是最新的存储库变更集,而不是当前的工作副本变更集。
Joseph Lisee 2012年

7
不建议在脚本中使用--debug,因为对输出的向后兼容性较不严格控制。使用模板。如果要执行此操作,请使用.dot作为修订版本。
Ry4an Brase 2012年

谢谢Ry4an,我对“ -r”一无所知。引用当前的工作副本修订版。从“ log”切换到“ parent”似乎是更好的选择。
Joseph Lisee 2012年

没问题。 hg help revisionshg help revsets有一些疯狂的强大快捷方式。
Ry4an Brase 2012年

但这不是该问题的最具体答案,因为afaik hg id -i仅打印全球哈希ID的短格式(12个字符),并且由于hg identify缺少--templateafaics,因此无法仅提取修订,而手册页中却没有其他说明打印摘要。
谢尔比·摩尔三世


20

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

hg parent --template '{node}'

hg手册页上的内容hg parents已被弃用,尽管您编写此答案时可能并非如此。如果存在未提交的合并,则有两个父修订版
谢尔比·摩尔

2
谁能告诉我们为什么不赞成养父母,我们应该使用什么呢?
文森特


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

请参阅docs,“模板的基础知识”段落及以下内容。


2
我几乎想要这个,但是散列很长。正是lid为了做到log -l 1 --template '{node}\n'这一点的别名-打印完整的修订版ID。
Michael Ekstrand

6
这将打印最新拉出的变更集。我们的工作目录可以更新到较旧的变更集。要打印我们更新到的变更集,请使用“ hg id”。唯一的问题是,“ hg id”不支持模板,也没有打印长哈希的选项(除非有人知道该怎么做)。
Eiver

1
正如Eiver所说,这不会在您的工作副本中仅打印存储库中最新的修订版。因为使用此解决方案可能会导致跟踪错误,所以我不赞成使用此解决方案。
Joseph Lisee 2012年

1
同上乔的无情。@Eiver的用法也hg --debug id -i如其他地方所说。
AJP 2014年

3

由于需要存在,最具体的非DEPRECATED命令--template只能打印修订版本信息(如问题所隐含):

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

或用于独特的长哈希形式:

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

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

请注意,如果存在未提交的合并,则.(点)仅显示工作组的两个父级中的第一个父级


3

正如其他人指出的那样,请勿使用log -l

使用hg log -r .获得的详细信息,而不是使用hg id其输出是有限的,它不支持模板。您还可以创建一个类似here = log -r .和使用的别名hg here。如果只想使用hash hg log -r . --template '{node}\n'


1

如果使用TortoiseHg,请在工作台中的修订行上单击鼠标右键,然后选择“复制哈希”(根据文档)。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.