Mercurial:创建两个提交版本的差异

38
有没有办法使用Mercurial获取两个提交之间的更改? 第二个提交不是直接在第一个提交后,它们之间有其他一些提交。
我尝试了
hg diff [some params] --change xxxxx --change yyyyy > file.patch

但这只包括了最后一个变更集。

如果使用hg无法实现此操作,那么是否有一种工具可以合并补丁?

3个回答

58

在我尝试解决这个问题时,我找到了这个页面。通过hg help diff 我找到了解决方法。

hg diff -r <rev> -r <rev> 对我的需求起到了作用(在两个标签之间进行差异比较)。


3
你可以对比任意两个版本的差异,它们不需要被标记。 - Johannes Rudolph
1
如果提交不是直接相继的,那么这对我没有用。在这种情况下,它还包括它们之间的所有内容,而这正是需要避免的。 - Georgii Ivankin
2
当代码库很大时,我发现--only-files-in-revs标志在这方面非常有用,可以强制hg仅查看在修订中修改的文件(hg diff -r <rev> -r <rev> --only-files-in-revs)。 - hnefatl
Mercurial v5.7.1 中不支持选项 --only-files-in-revs。 - Paul

6

外部差异比较

The extdiff extension will allow you to use your preferred external diff tool. In my case I use meld so day to day I run this type of command

hg meld -r <rev1> -r <rev2>

First enable the extdiff extension in the extensions section (I also have shelve & record enabled)

[extensions]
shelve =
record =
hgext.extdiff =

Then add this section ...

[extdiff]
cmd = meld
cmd.meld = /usr/bin/meld

to your .hgrc file. Obviously replace meld with the command used to launch your preferred tool


2
我认为我们应该先启用extdiff扩展,这样整个.hgrc文件就是:[extensions] extdiff =[extdiff] cmd.extdiff = meld - Azusa Nakano
@Asaka - 谢谢你发现了这个问题。 - Chris McCauley

2

需要导出吗?每个变更集都需要一个补丁文件,就像这样:

hg export --output %r.patch --rev A --rev B


其中,“A”和“B”是版本号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接