6

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

更准确地说,我hg pull -u是几天前做的,现在我想知道这次拉取是否只下载了最后一个提交,或者是否有一些提交还没有被拉取,使我的最后一次拉取也得到了它们。

hg log似乎给出了提交的日期,但没有关于更新。这些信息在任何地方吗?

4

2 回答 2

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等人完成的。有关一些启动说明,请参阅此自述文件。

于 2012-04-17T11:43:48.897 回答
1

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

[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 update 时,上述钩子都会生成这样的日志条目:

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

当 hg update 在没有设置特定修订标志 (-r) 的情况下运行时,这也有效

于 2015-12-22T22:46:49.657 回答