这几乎是Mercurial中检查单个变更集的问题的副本,毫无疑问是另一个我仅通过Google无法在SO上找到的问题的副本。
我正在回顾Mercurial存储库,并想要查看两个修订版本(比方说2580和2581)之间有什么确切的变化:
hg log -v -r 2581
给我所有改变的文件。
我如何查看这些文件的差异(diff)?
谢谢。
这几乎是Mercurial中检查单个变更集的问题的副本,毫无疑问是另一个我仅通过Google无法在SO上找到的问题的副本。
我正在回顾Mercurial存储库,并想要查看两个修订版本(比方说2580和2581)之间有什么确切的变化:
hg log -v -r 2581
给我所有改变的文件。
我如何查看这些文件的差异(diff)?
谢谢。
第2580个修订版本不一定是第2581个修订版本的父版本。当然,检查它是否是父版本很容易,但更容易的方法是:
hg log -p -r 2581
这将2581与其(第一个)上一版本进行比较,无论它是什么,最清楚地回答了问题“2581到底做了什么?”
hg diff -r 2580 -r 2581
使用
hg log -p -r 2581
或者hg diff -c 2581
它们之间的区别在于第一行。Hg log还显示有关变更集(父级、作者、日期等)的信息。
我更喜欢第二种方式hg diff -c ...
,因为它可以存储到补丁文件中。
hg diff -c 2581 > revision_2581.patch
hg diff -r 'last(ancestors(2581),2)'
相比于 -c(用于 diff)和 -p(用于 log),这确实有些冗长。
但是,Mercurial 允许您创建 revset 别名。
在您的 .hgrc
文件中:
[revsetalias]
next(s) = descendants(s, 1)
prev(s) = last(ancestors(s),2)
hg diff -r 'prev(2581)'
hg log -r 'prev(2581)'