2011-03-14 27 views
4

如何在使用svn生成diff時忽略編碼約定?如何在使用svn生成diff時忽略編碼約定/樣式?

爲了詳細說明,我不希望以下兩種編碼風格

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

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

如果我運行一個svn差異,我會得到下面的差異來區分:

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

但我不希望這是差異的一部分。我希望svn忽略這種編碼風格的差異。那麼,在svn中有什麼選擇可以幫助我做到這一點? 或 有沒有腳本或者我可以在svn生成的diff上運行的東西只能吐出來real更改而不是編碼風格的變化?

TIA

+2

[語義DIFF實用程序(HTTP的可能重複:// stackoverflow.com/questions/523307/semantic-diff-utilities) –

回答

1

我不知道svn的內置函數來做到這一點。無論如何,您可以在提交之前使用某種工具來統一縮進代碼,例如C的縮進工具(http://www.gnu.org/software/indent/)。

或者你可以嘗試使用此選項啓動DIFF: svn diff -x -w

+0

事情是我檢查出來的代碼格式很差,我用eclipse格式化了它,現在我需要發送差異代碼審查而且我不能用這些編碼風格的差異發送完整的差異,因爲它遇到了幾千行,我只是想根據我所做的代碼中的實際更改發送差異。希望這能解釋我現在面臨的確切問題。 – texens

+1

@texens:嘗試檢查svn diff -x -w。它應該忽略空格和末尾。 – Heisenbug

+3

@texens - 據我所知,我的建議爲時已晚,但從來沒有在一次提交中混用任何其他重構和重新格式化。而且,使用Eclipse自動格式化工具更改的「格式不正確」代碼可能帶有已銷燬的其他語義。是的,採取以前的修訂,只應用格式,提交,然後應用您的更改並再次提交。不要破解Subversion :) – bobah

0

我不能與顛覆直接產生的差異幫助。

但是,一旦您意識到您所看到的差異與格式有關,那麼您可以切換到替代工具 。請參閱我們的Smart Differencer工具。這些工具是特定於語言的。他們通過解析語言並構建抽象語法樹,然後比較樹來工作。這使得它們完全是空白的(和評論)不可檢測的;重新格式化代碼不會顯示爲差異。差異報告爲語言元素(操作數,表達式,語句,聲明,塊,方法,類,...)和編輯操作(在塊中移動,刪除,插入,複製,重命名變量)行/列和終止行/列

目前,我們有許多語言,包括C,C++,C#,Java和JavaScript的,PHP SmartDifferencers