【问题标题】:Mercurial: Better command line diff?Mercurial:更好的命令行差异?
【发布时间】:2011-03-22 12:52:16
【问题描述】:

我想知道如何改进 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)

谢谢

【问题讨论】:

  • 请问当前的 diff 输出给你带来了什么困难?此外,了解您在哪个平台上运行 Hg 也会有所帮助,因为工具可能会有所不同。
  • mdiff(1)wdiff(1) 在 Ubuntu 上的 wdiff 包中,可能只是工具。
  • Lazarus,Faramir 可能想要 CLI 工具,它可以像 xxdiff 一样智能,面对微小的变化。
  • @Lazarus @sarnold 是对的。我只想要一些足够“智能”的东西来检测我添加到文件中的所有内容都是两行,即 if 语句和右括号。相反,它向我显示了删除的整个代码块,然后在单独的部分中再次添加?
  • 如果它只是为您提供 if 和右括号,您会丢失上下文,但这在很大程度上取决于您对 diff 输出的使用。各有千秋。

标签: mercurial diff


【解决方案1】:

您会看到这些更改,因为空格更改很重要。如果你这样做hg diff --ignore-space-change,你会看到更像:

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

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

另外,请考虑更新 Mercurial。您的版本已经使用了大约三年,并且当前的软件包是为 Debian 构建的。

【讨论】:

  • 由于某种原因对我不起作用。我正在使用包含它的 -wbB 标志,即使我使用 --ignore-space-change 什么都没有!
【解决方案2】:

我对类似的东西感兴趣,但我最终使用 DiffMerge(仅限 Windows,但您可以在 Debian 上尝试 Kdiff3)作为查看此类更改的视觉差异:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多