Mercurial:特定变更集中的差异?

时间:2011-03-21 10:54:36

标签: mercurial

这几乎完全是Examining a single changeset in Mercurial的重复,毫无疑问,这是我通过谷歌单独找不到的另一个问题的重复。

我正在回顾Mercurial回购,我希望看到两次修订之间究竟发生了什么变化(比方说2580和2581):

hg log -v -r 2581 

为我提供了所有已更改的文件

我怎样才能看到这些文件的差异

感谢。

4 个答案:

答案 0 :(得分:71)

修订版2580不一定是2581的父版本。当然,检查它是否容易,但是更容易实现:

hg log -p -r 2581

将2581与其(第一)父母修订版本进行比较,无论它是什么,并且最清楚地包含问题的答案“2581做了什么?”

答案 1 :(得分:5)

尝试hg diff -r 2580 -r 2581

答案 2 :(得分:3)

hg diff -r 2580 -r 2581

这是一个错误的例子。修订版2580可以在另一个分支中,您可以在两个分支之间获得差异。

使用

hg log -p -r 2581

hg diff -c 2581

第一行中它们之间的区别。 Hg日志还显示有关变更集(父,作者,日期......)的信息

我更喜欢第二个变体hg diff -c ...,因为它可以存储到补丁文件中。

hg diff -c 2581 > revision_2581.patch

答案 3 :(得分:0)

另一种解决方案是使用revset表示法,这是IMO更好的解决方案,因为您可以在更多地方连续使用它(即,您无需了解diff -clog -p)。

hg diff -r 'last(ancestors(2581),2)'

是的,与-c(用于diff)和-p(用于log)相比,它相当冗长。

但是,mercurial允许您创建修订集别名

在您的.hgrc中:

[revsetalias]

next(s) = descendants(s, 1)
prev(s) = last(ancestors(s),2)

现在您可以做

hg diff -r 'prev(2581)'
hg log -r 'prev(2581)'