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

54

这几乎是Mercurial中检查单个变更集的问题的副本,毫无疑问是另一个我仅通过Google无法在SO上找到的问题的副本。

我正在回顾Mercurial存储库,并想要查看两个修订版本(比方说2580和2581)之间有什么确切的变化:

hg log -v -r 2581 

给我所有改变的文件

我如何查看这些文件的差异(diff)

谢谢。


只需将“-v”更改为“-p”--请参见下面的答案。 - Ry4an Brase
相关: https://dev59.com/k3M_5IYBdhLWcg3wmkQK - Ben J
4个回答

77

第2580个修订版本不一定是第2581个修订版本的父版本。当然,检查它是否是父版本很容易,但更容易的方法是:

hg log -p -r 2581

这将2581与其(第一个)上一版本进行比较,无论它是什么,最清楚地回答了问题“2581到底做了什么?”


35
你也可以使用 hg diff -c 2581 来进行此操作。 - Ringding
等一下,-p选项不是表示“显示补丁”吗? - Saulo Silva

6
hg diff -r 2580 -r 2581

这是一个错误的例子。修订版本2580可能位于另一个分支中,您需要获取两个分支之间的差异。

使用

hg log -p -r 2581

或者hg diff -c 2581

它们之间的区别在于第一行。Hg log还显示有关变更集(父级、作者、日期等)的信息。

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

hg diff -c 2581 > revision_2581.patch


6
尝试使用“hg diff -r 2580 -r 2581”命令进行比较。

1
另一种解决方案是使用revset符号表示法,我认为这是更好的解决方案,因为您可以在更多地方一致地使用它(即您不需要了解diff -c和log -p)。
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)'

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