是否可以知道何时从远程存储库中提取某个提交并且使用Mercurial更新了文件?
更确切地说,我几天前做了一个hg pull -u
,现在我想知道这个下拉是否仅下载了最后一次提交,或者是否有一些尚未提取的提交,我最后一次拉动他们。
hg log
似乎提供了提交的日期,但没有提及更新。这个信息在哪里?
答案 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更新时,这也有效