我有一个带传票的mercurial回购(也是mercurial)。想象一下我更改了传票和主回购的情况。现在我想看看几次提交之间的变化,包括subrepos中的变化。
有可能吗?
我使用TortoiseHG和diffmerge。在从TortoiseHg调用visual diff的差异中,我看不到几次提交之间的subrepos的变化。
发布于 2018-04-12 18:07:08
在命令行中,您可以执行以下操作。假设您想要查看变更集(在主存储库中) c608f6017bd7和72d284a44170之间名为example的子存储库的所有更改。
在主存储库中
hg diff -rc608f6017bd7:72d284a44170 .hgsubstate | grep example将返回子存储库example的变更集,如下所示:
-001fc0acef220bcd42898ef3932dee8330ea64c0 example
+77f9db4d51c4b483607178aba91c872b0adedf1e example现在,您可以使用以下命令查看子存储库更改的日志和差异:
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发布于 2015-07-30 18:28:18
我只能在命令行上告诉您如何实现它--但这也可以通过tortoiseHG轻松实现:
大多数命令都可以通过使用-S或--subrepos标志获知子存储库。因此,为了查看两个变更集X和Y之间的差异,包括所有子存储库上的变更集,请在主存储库中执行以下操作:
hg diff -S -rX:Y
当然,请注意,如果提交给主存储库的子存储库版本没有更改,则不会在子存储库中显示差异。
发布于 2015-08-02 02:44:16
对于我使用过的TortoiseHg版本(不包括最近的几个版本),我还没有看到一种方法来做你所问的事情。不过,有几个选项:
hg diff -S -rX:Y。hg archive --repository <path-to-repo> -r <rev> -S -t files -- <outputfolderpath>,或在TortoiseHg中,右键单击变更集,选择导出->存档)。然后在归档目录上使用diffmerge。这有点单调乏味(特别是如果您想要比较许多变更集),但您将得到一个“深”的视觉差异。https://stackoverflow.com/questions/31717127
复制相似问题