使用 mercurial 获取修订之间的一系列差异

Getting a sequence of diffs between revisions with mercurial

我想查看 Mercurial 存储库中同一文件的连续(非相同)修订之间的一系列差异。我显然可以通过解析 hg log 的结果,提取变更集,然后一次读取这两行并在循环中发出 hg diff -r $first_changset -r $second_changeset 来做到这一点。

但是 - 是否有更多 straightforward/elegant/graphical 方法来实现同样的目标?

注意:虽然不注释 - 至少不是默认情况下所做的。我希望能够看到同一变更集中的所有变更。

最快的方法是使用 hg export,例如:

hg export -r reva:revb

这实际上会给您一个可导入的补丁,但额外的元信息通常会有帮助。

具有最多可配置输出的最通用解决方案是 hg log 带有模板,例如:

hg log -r reva:revb -T '{diff()}\n'

diff() 模板函数采用可选参数来指定包含和排除模式。有关详细信息,请参阅 hg help templates

请注意,这也适用于 -G,并将在差异旁边绘制依赖关系图。即使图形是线性的,这也有助于找到差异的开始和结束。显然,您还可以向模板添加更多信息,例如修订号、哈希、提交消息和作者。

通常,hg diff -c 用于显示 修订的差异,但不幸的是,当您有多个修订时,这不起作用。