如何让diff停止修改函数docblocks?

时间:2011-09-12 13:03:57

标签: diff

如果我在代码中添加一个函数,我的差异如下:

 }

 /**
+ * My new function docblock.
+ */
+function my_function($foo) { }
+
+/**
  * The next function's docblock.
  *

有没有办法阻止差异化呢?

我尝试了git的--patience标志但产生了相同的结果。

2 个答案:

答案 0 :(得分:0)

如果你期望的是一个更好的差异,它会“理解”在评论块比较中的存在并使diff以不拆分这些块的方式对齐,那么你现在就不在了。

“diff”的内部算法自动将块对齐到具有最大数字的行,其差异仍为“真”。例如,而不是

 }

+/**
+ * My new function docblock.
+ */
+function my_function($foo) { }
+
 /**
  * The next function's docblock.
  *

Diff将始终返回您在问题中描述的结果。许多基于GNU diff的工具都遇到了这个问题。

答案 1 :(得分:0)

你想要的是一个比较程序结构的工具,而不是“文本行”。

使用编程语言的结构作为指南,查看我们的SmartDifferencer工具,它们比较程序的源文本。有许多语言的SmartDifferencer(C ++,C#,Java,COBOL,......)

对于OP的例子,它应该只是注意到已经添加了函数(及其docblock)。