是否有一个知道缩进的差异工具(补丁)?

aug*_*tin 22 diff patch

我经常使用gnu-utils补丁和差异.使用git,我经常这样做:

git diff
Run Code Online (Sandbox Code Playgroud)

通常简单的更改会创建一个大的补丁,因为唯一改变的是,例如,添加一个if/else循环,内部的所有内容都缩进到右边.

查看这样的补丁可能很麻烦,因为只有逐行手动比较才能指示缩进代码中是否有任何实质性更改.我们可能只谈论几行代码,或者几十个(或更多)嵌套代码.(我知道:这样一个假想的大函数最好分成更小的函数,但这不是重点).

当代码块中的唯一更改是缩进并让开发人员知道多少时,GNU diff/patch是否能够注意到?

有没有其他差异工具以这种方式运作?

编辑:好的,--ignore-space-change但是我们处于这样一种情况:或者我们有一个人类更可读的补丁,或者我们有一个完整的补丁,机器会知道如何阅读.难道我们不能拥有更好的两个世界中更好的差异工具,它可以显示人类空间的变化,同时允许机器完全应用补丁吗?

ric*_*chq 17

使用GNU diff,您可以传递-b--ignore-space-change忽略修补程序中空白区域的更改.

如果您使用emacs并且已经发送了补丁,您还可以使用M-x diff-ignore-whitespace-hunk重新格式化补丁来忽略特定块中的空白区域.或者diff-refine-hunk突出显示角色的角色变化,这往往指出变化的"肉".

至于应用补丁,您可以使用-l--ignore-whitespace使用GNU补丁来忽略选项卡和空格的更改.小心Python代码:-)

  • +1很高兴知道.git diff -b> my.patch也可以.那很有用.但是,输出不能用作适当的补丁,否则不会应用预期的缩进.我想知道我们是否可以充分利用问题的两个方面,例如,有一个包含3种类型的线(相应颜色)的补丁文件:未更改的行,已更改的行( - 或+)以及只是缩进...机器都知道如何应用补丁,人类会更好地理解它. (2认同)