Mercurial:更好的命令行差异?

时间:2011-03-22 12:52:16

标签: mercurial diff

我想知道如何改进diff命令作为hg的一部分。例如,假设我有这段代码:

line 1 
line 2
lin3 3

我将其改为:

if($condition) {
   line 1
   line 2
   line 3
}

hg diff将显示带有“ - ”的原始三行和带有“+”的新五行。即使我使用-wbB运行以忽略空格和行更改。我理解它试图告诉我的是什么,但它是不是可以“更聪明”并且意识到我只添加了两行(并增加了三行的等级)?

编辑: 是否有可能让hg diff告诉你添加了什么文字以及在哪里?与代码的“结构”如何因为这些添加而改变相反?

编辑2: 我正在使用Mercurial 1.0.1运行Debian(Linux dev 2.6.26)

由于

2 个答案:

答案 0 :(得分:5)

您正在看到这些更改,因为空白更改很重要。如果你hg diff --ignore-space-change,你会看到更像是:

+ if($condition) {
   line 1
   line 2
   line 3
+ }

听起来像你想要的。您还可以使用ExtDiff Extension来调用@sarnold建议的任何备用差异程序。

另外,请考虑更新Mercurial。你的版本大约有三年了,目前的软件包是为Debian构建的。

答案 1 :(得分:0)

我对类似的东西感兴趣,但我最终使用了DiffMerge(仅限Windows,但你可以在Debian上试用Kdiff3)作为视觉差异来审查这样的变化:

enter image description here

可悲的是,即使您以您喜欢的形式(使用其他工具)生成补丁,在存储库历史记录中也会以标准的mercurial格式显示。