这几乎完全是Examining a single changeset in Mercurial的重复,毫无疑问,这是我通过谷歌单独找不到的另一个问题的重复。
我正在回顾Mercurial回购,我希望看到两次修订之间究竟发生了什么变化(比方说2580和2581):
hg log -v -r 2581
为我提供了所有已更改的文件。
我怎样才能看到这些文件的差异?
感谢。
答案 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 -c
和log -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)'