如何查看两个Hg存储库之间不同的所有文件的列表?

时间:2010-08-24 17:23:21

标签: mercurial

我有一个拥有大量工作代码的存储库。我团队中的另一位开发人员暂时没有任何更新,然后承诺了5个变更集。所以,现在我们有两个相隔将近两周的头。提示不起作用,但我的变更集确实如此。

我想知道两个存储库之间的差异,而不必合并它们(因为我不确定我是否想这样做)。

2 个答案:

答案 0 :(得分:3)

安德鲁的回答告诉你如何看待文件之间的差异。当您需要所有细节时,这非常棒。但这里是如何直接查看文件名称:

hg status --rev X --rev Y

众所周知,status命令通常用于查看自上次提交以来工作副本中发生了哪些更改,或者更准确地说,是因为工作副本的父修订版本(请参阅hg parents或查找它) hg glossary如果您不知道那是什么)。但是,status命令也可用于比较其他修订版。

这可以用于各种好事......一个例子就是编写发行说明,提到自上次发布以来引入的任何新翻译都会很好。对于Mercurial本身,我可以这样做:

% hg status --rev 1.6.2 --rev tip i18n
M i18n/da.po
M i18n/it.po
M i18n/pt_BR.po
A i18n/ro.po

看到罗马尼亚语翻译是新的,丹麦语,意大利语和巴西葡萄牙语翻译已经更新。在这种情况下,我的工作副本父版本是提示,所以我可能遗漏了--rev tip

答案 1 :(得分:2)

如果您的存储库中有两个头(请记住,您实际上不必与其他开发人员的头部更新您的工作副本),请从工作副本的根目录开始:

hg diff -r <your head changeset id> -r <other dev changeset id> .

应该有效。当然,您可以使用hg头来获取变更集ID,其中一个听起来像是“小费”。

如果以上信息返回的信息过多,而您只想知道哪些文件发生了变化,请尝试通过grep进行管道传输:

hg diff -r <your head id> -r <other dev id> | grep -E '^\+{3} b/'

可能会做到这一点。