在Mercurial获取拉动和更新的日期

时间:2012-04-17 10:46:43

标签: mercurial dvcs pull

是否可以知道何时从远程存储库中提取某个提交并且使用Mercurial更新了文件?

更确切地说,我几天前做了一个hg pull -u,现在我想知道这个下拉是否仅下载了最后一次提交,或者是否有一些尚未提取的提交,我最后一次拉动他们。

hg log似乎提供了提交的日期,但没有提及更新。这个信息在哪里?

2 个答案:

答案 0 :(得分:8)

Mercurial不会记录此信息。 Mercurial存储库只是变更集的容器,Mercurial不存储变更集如何(或何时)进入存储库。

您可以为此设置挂钩,但您必须自己构建脚本。一个非常基本的系统将是

[hooks]
pre-pull = (date; hg root; hg tip) >> ~/.pull-log
post-pull = hg tip >> ~/.pull-log

这将在每~/.pull-log之前的hg pull中记录当前日期,当前存储库和当前提示。拉动后,记录新的尖端。您可以构建解析日志文件的脚本,以提取有关每次拉动的信息。

  

hg log似乎提供了提交的日期,但没有提供更新

是的,hg log仅关注存储的历史记录(变更集),而更新等工作副本操作不是记录历史记录的一部分。

最后,让我提一下,这是我第一次看到有人要求“拉动日志”。然而,相反的情况很常见:有一些脚本用于维护服务器上的“推送日志”,以查看谁推送了什么以及何时推送。这是由Mozilla等完成的。有关一些开始说明,请参阅this README

答案 1 :(得分:1)

如果要记录何时以及使用哪个修订版hg更新来更新代码,请使用这些挂钩:

[hooks]
pre-update = (echo "---------------------------------"; date --rfc-3339=s; hg root; echo "pre-update:"; hg identify --id --branch) >> .hgupdates
post-update = (echo "post-update:"; hg identify --id --branch) >> .hgupdates

上面的钩子会在每次运行hg更新时生成这样的日志条目:

2015-12-23 00:44:31+02:00
/var/www/my/project
pre-update:
802120d1d3a0 somebranch
post-update:
302720d1d3d2 otherbranch

在没有特定修订标志(-r)set

的情况下运行hg更新时,这也有效