如何在使用svn生成差异时忽略编码约定/样式?

如何在使用svn生成差异时忽略编码约定/样式?,svn,coding-style,diff,Svn,Coding Style,Diff,如何在使用svn生成差异时忽略编码约定 为了详细说明,我不想区分以下两种编码样式 while (variableIter.hasNext()) { lModel = variableIter.next(); } 及 如果我运行svn差异,我将得到以下差异: - while (variableIter.hasNext()) - { - lModel = variableIter.next(); +

如何在使用svn生成差异时忽略编码约定

为了详细说明,我不想区分以下两种编码样式

while (variableIter.hasNext())
{
    lModel = variableIter.next();
}

如果我运行svn差异,我将得到以下差异:

 -            while (variableIter.hasNext())
 -            {
 -                lModel = variableIter.next();
 +            while (variableIter.hasNext()) {
 +               lModel = variableIter
 +               .next();
但我不希望这成为差异的一部分。我希望svn忽略这种编码风格的差异。那么,svn中是否有任何选项可以帮助我做到这一点? 或 是否有一个脚本或其他东西可以在svn生成的diff上运行,以便只显示真实的更改而不显示编码样式的更改


TIA

我不知道svn是否有一个内置的功能来实现这一点。无论如何,您可以使用一些工具在提交之前统一地缩进代码,比如C语言的缩进工具(http://www.gnu.org/software/indent/).

或者,您可以尝试使用以下选项启动差异:
svn diff-x-w

我无法帮助处理subversion直接生成的diff

但是,一旦你意识到你所看到的差异与格式有关,那么你可能会选择另一种方法 区分工具。看看我们的工具。这些工具是特定于语言的。他们的工作方式是解析语言,构建抽象语法树,然后比较这些树。这使得它们完全没有空格(和注释)的直观性;重新格式化代码并没有什么不同。差异报告为语言元素(操作数、表达式、语句、声明、块、方法、类等)和编辑操作(块内的移动、删除、插入、复制、重命名变量),精确到起始行/列和结束行/列


我们现在有很多语言的智能差分器,包括C、C++、C、java、JavaScript、PHP。< /P>可能的重复是我检查的代码格式很差,我用Eclipse来正确地格式化。现在我需要发送DIFF来进行代码审查,不能用这些编码方式发送整个DIFF。差异,因为它运行到几千行。我只想发送与我所做代码中的实际更改相对应的差异。希望这能解释我现在面临的确切问题。@texens:尝试检查svn diff-x-w。它应该忽略空格和结束行。@texens-我理解,我的建议太晚了,但永远不要重新混合在一次提交中使用任何其他内容进行分解和重新格式化。此外,“格式错误”您使用Eclipse自动格式化工具更改的代码可能包含您已销毁的其他语义。是的,请接受以前的修订,仅应用格式化,提交,然后应用更改并再次提交。不要破解Subversion:)@0verbose:是的,这是我尝试的第一件事。我还尝试了-x——忽略eol样式。但不幸的是,他们似乎没有一个能满足我的要求。这可能是因为svn diff在每行的基础上对字符进行比较。当角色从一行移动到另一行时(这是当前问题中的情况),几乎没有任何方法可以忽略它。也许,我们需要一个脚本或第三方应用程序来完成上述工作,因为由于其设计的限制,我看不出svn diff如何完成这项工作。@bobah:是的,我已经意识到,困难的是:|我有一个9000行长的diff文件,我必须遍历整个diff文件并手动删除svn diff由于编码风格不同而产生的不需要的差异:(

 -            while (variableIter.hasNext())
 -            {
 -                lModel = variableIter.next();
 +            while (variableIter.hasNext()) {
 +               lModel = variableIter
 +               .next();