有没有更好的方法提取当前版本散列水银比打印当前Mercurial修订散列?
hg log -l1|grep changeset|cut -d: -f3
?
我的web应用程序部署脚本的一部分“标记”了上传的应用程序tarball及其独特的修订哈希。
有没有更好的方法提取当前版本散列水银比打印当前Mercurial修订散列?
hg log -l1|grep changeset|cut -d: -f3
?
我的web应用程序部署脚本的一部分“标记”了上传的应用程序tarball及其独特的修订哈希。
尝试:
hg id -i
例子:
$ hg id -i
adc56745e928
如果你想要下面的解决方案,如果你想完整的哈希使用:'hg --debug id -i'如果你想要模板支持使用'hg parent --template'{node}''不要使用'hg log - l 1',它是最新的存储库变更集,而不是当前的工作副本变更集。 – 2012-06-11 17:33:13
不推荐在脚本中使用--debug,那么输出不太精心控制w/r/t向后兼容性。使用模板。如果你想用瓦特/日志来做,那么使用'.'点作为修订。 – 2012-06-12 18:07:25
谢谢Ry4an我不知道“-r”。引用当前的工作副本修订版。这似乎是更好的举动,然后从“日志”切换到“父母”。 – 2012-06-13 15:52:47
hg log -l 1 --template '{node|short}\n'
见the docs,段落 “模板的基础知识” 和以下。
我几乎想要这个,但是用了很长的哈希。将'lid'混淆到'log -l 1 --template'{node} \ n''实现了这一点 - 打印完整版本ID。 – 2011-04-21 14:13:39
这将打印最近拉出的变更集。我们的工作目录可以更新为较旧的变更集。要打印我们更新的变更集,请使用“hg id”。唯一的问题是,“hg id”不支持模板,也没有打印长散列的选项(除非有人知道如何去做)。 – Eiver 2011-11-28 11:13:42
正如Eiver所说的那样,这不会在您的工作副本中打印实际的修订版本,而只是存储库中的最新版本。因为使用这个解决方案可能会引入跟踪错误,所以我投下了这个方案。 – 2012-06-11 17:30:58
hg --debug id -i
这将输出长哈希值,与是否有未提交的更改有加。
这似乎是3.1.2中的默认值 – nickd 2015-04-30 17:03:14
由于Ry4an的[评论]下调投票(http://stackoverflow.com/questions/2485651/print-current-mercurial-revision-hash#comment14377031_2485923)。 – 2015-11-26 14:19:41
您可以使用--template与父命令,我用它来获取长哈希:
hg parent --template '{node}'
hg手册页说'hg parents'是[DEPRECATED](https://www.selenic.com/mercurial/hg.1.html#parents),虽然也许你写这个答案时可能不是这种情况。如果有未提交的合并,则有[两个父修订](https://www.mercurial-scm.org/wiki/UnderstandingMercurial#line-157)。 – 2015-11-26 16:11:41
有人可以告诉我们为什么父母不推荐使用,我们应该使用什么? – Vincent 2016-09-23 19:44:54
总结的答案,他们的反应,似乎这是 打印的最佳方式独特(未短形式)的当前版本标识符 :
hg log -l 1 --template '{node}\n' -r .
注意如果有[未提交合并](https://www.mercurial-scm.org/wiki/UnderstandingMercurial#line-157),'.'(点)只显示[第一个父母](https:/ /www.selenic.com/hg/help/revisions)工作组的两位家长。 – 2015-11-26 16:20:03
你需要'-l 1'吗?似乎没有它的工作。 – aaaidan 2016-01-14 00:48:05
最具体的非过时的命令WHI由于--template
存在CH可以,如果需要的是简洁,仅打印修订信息(被这个问题所暗示的):
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 .
表示当前工作目录修订版,即documented,其中hg help revsets
a nd hg help revisions
。
请注意,如果存在uncommitted merge,则.
(点)仅显示工作组的两个父母的first parent。
正如别人指出的,不要使用log -l
。
使用hg log -r .
可以获取详细信息,而不是使用hg id
,它们的输出受限且不支持模板。您还可以创建一个像here = log -r .
这样的小别名,并使用hg here
。如果你只想使用散列使用hg log -r . --template '{node}\n'
。
请注意,'hg log -l 1'为您提供最新的变更集,不一定是您当前更新的变更集!-f标志限制hg日志输出到他当前工作目录的祖先,所以'hg log -f -l1'更接近你想要的。 – waterproof 2015-01-13 19:55:51