如何查看提交之间子提交的更改

时间:2015-07-30 06:58:56

标签: mercurial tortoisehg mercurial-subrepos diffmerge

我有一个merreial repo与subrepos(也是mercurial)。想象一下我改变了subrepos和主回购的情况。现在我想看看几个提交之间的变化,包括子目录的变化。

有可能吗?

我使用TortoiseHG和diffmerge。在diffmerege调用TortoiseHg的视觉差异时,我无法看到几个提交之间子视觉的变化。

3 个答案:

答案 0 :(得分:1)

在命令行中,您可以执行以下操作。我们假设您要查看更改集(主要仓库中)examplec608f6017bd7之间名为72d284a44170的子报告的所有更改。

在主回购

hg diff -rc608f6017bd7:72d284a44170 .hgsubstate | grep example

将返回子汇率example的变更集,例如:

-001fc0acef220bcd42898ef3932dee8330ea64c0 example
+77f9db4d51c4b483607178aba91c872b0adedf1e example

现在,您可以看到日志和subrepo的差异更改为:

cd example
hg log -r001fc0acef220bcd42898ef3932dee8330ea64c0:77f9db4d51c4b483607178aba91c872b0adedf1e
hg diff -r001fc0acef220bcd42898ef3932dee8330ea64c0:77f9db4d51c4b483607178aba91c872b0adedf1e

如果您经常需要它,可以创建一个名为sublog的bash脚本,如:

#!/bin/bash

r=$(hg diff -r$1:$2 .hgsubstate | grep $3 | cut -c 2-41 | tr '\n' ':' | sed 's/:$//'; echo '')
cd $3
hg log -r:$r

并使用它:

sublog c608f6017bd7 72d284a44170 example

答案 1 :(得分:0)

我只能告诉你如何在命令行上实现它 - 但是tortoiseHG也可以使用它:

使用-S--subrepos标志可以使大多数命令了解子存储库。因此,为了查看两个变更集X和Y之间的差异,包括所有子存储库中的差异,请在主存储库中执行:

hg diff -S -rX:Y

当然,请注意,如果没有更改提交给主存储库的子存储库版本,它将不会在子存储库中显示差异。

答案 2 :(得分:0)

对于我使用过的TortoiseHg版本(不包括最后几个版本),我还没有看到一种做你所问的方法。但有几个选择:

  • 您可以直接在TortoiseHg的输出日志窗口中输入命令,因此您可以在那里hg diff -S -rX:Y进行操作。
  • 将要进行差异的父仓库的版本存档到某些目录(hg archive --repository <path-to-repo> -r <rev> -S -t files -- <outputfolderpath>,或者在TortoiseHg中,右键单击变更集,选择导出 - &gt; 归档的)。然后在归档目录上使用diffmerge。这有点单调乏味(特别是如果你想要区分许多变更集),但你会得到一个“深层”视觉差异。