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

时间:2011-03-14 07:50:38

标签: svn coding-style diff

如何使用svn生成diff时忽略编码约定?

详细说明,我不想区分以下两种编码风格

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

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

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

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

但我不希望这成为差异的一部分。我希望svn忽略这种编码风格的差异。那么,svn中有什么选项可以帮我这么做吗? 要么 是否有一个脚本或我可以在svn生成的差异上运行的东西只吐出真正的变化而不是编码样式的变化?

TIA

2 个答案:

答案 0 :(得分:1)

我不知道svn是否有内置函数来做到这一点。无论如何,你可以使用一些工具在提交之前统一缩进你的代码,比如C的缩进工具(http://www.gnu.org/software/indent/)。

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

答案 1 :(得分:0)

我无法帮助直接由subversion生成的diff。

但是一旦你意识到你所看到的差异与格式相关,那么你可能会选择另一种方式 差异化工具。请参阅我们的Smart Differencer工具。这些工具是特定于语言的。他们通过解析语言并构建抽象语法树,然后比较树来工作。这使得它们完全是空白(和评论)无关紧要;重新格式化代码并不会显示出差异。差异被报告为语言元素(操作数,表达式,语句,声明,块,方法,类,...)和编辑操作(移动,删除,插入,复制,重命名变量 - 在块内并且精确到开头行/列和结束行/列。

我们目前拥有适用于多种语言的SmartDifferencers,包括C,C ++,C#,Java,JavaScript,PHP。