我有一个merreial repo与subrepos(也是mercurial)。想象一下我改变了subrepos和主回购的情况。现在我想看看几个提交之间的变化,包括子目录的变化。
有可能吗?
我使用TortoiseHG和diffmerge。在diffmerege调用TortoiseHg的视觉差异时,我无法看到几个提交之间子视觉的变化。
答案 0 :(得分:1)
在命令行中,您可以执行以下操作。我们假设您要查看更改集(主要仓库中)example
和c608f6017bd7
之间名为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版本(不包括最后几个版本),我还没有看到一种做你所问的方法。但有几个选择:
hg diff -S -rX:Y
进行操作。hg archive --repository <path-to-repo> -r <rev> -S -t files -- <outputfolderpath>
,或者在TortoiseHg中,右键单击变更集,选择导出 - &gt; 归档的)。然后在归档目录上使用diffmerge。这有点单调乏味(特别是如果你想要区分许多变更集),但你会得到一个“深层”视觉差异。