2010-10-28 21 views
4

是否有方法在svn diff或其他工具(基於linux)到只顯示空白/製表符變化svn diff只有空白/製表符變化

目的,我不想要檢查這些差異。我可以在簽入之前將這些行放回相同的狀態,如果某個工具可以捕獲這些差異。

感謝,

回答

5

這應該適合你。

#!/bin/bash 

FILES=`svn status | awk '{ print $2}'` 
for file in $FILES 
do 
    COUNT=`svn diff $file --diff-cmd 'diff' -x '-w' | wc -l` 
    if [ $COUNT -le 2 ] 
    then 
     echo "$file has only whitespace changes" 
    fi 
done 

此外,而不是將行回到相同的狀態,爲什麼不只是恢復這些文件?

+0

Thanks mfisch。 ..很抱歉,如果我的問題不明確的地方。你的回答幾乎是正確的。我想看看是否有文件只有空格變化的行。 (不是整個文件).. FILES ='svn status | awk'{print $ 2}'' for $ file中的文件 do COUNT1 ='svn diff $ file --diff-cmd'diff'-x'-w'| wc -l' COUNT2 ='svn diff $ file --diff-cmd'diff'| wc -l' if [! $ COUNT1 = $ COUNT2] then echo「$ file has whitespace changes」 fi done – Xprog 2010-10-28 03:15:02

0

Beyond Compare將顯示那些用不同的顏色取決於文件的類型高亮顯示。他們有Linux版本,但我沒有使用它。儘管這是一個很好的差異工具。

+0

謝謝穆斯。我正在尋找一個可以從命令行運行的工具..我想根據那些會說如果我觸及的文件在某些​​行上只有「只有空白變化」的腳本來創建腳本,所以不要提交。 – Xprog 2010-10-28 02:11:02

2

@ mfisch腳本的一些改進:只對具有文本修改的文件起作用,並且支持帶空格的文件名。

#!/bin/bash 

svn status | grep ^M | sed 's/^........//' | 
while read -r file 
do 
    COUNT=$(svn diff "$file" --diff-cmd 'diff' -x '-w' | wc -l) 
    if [ $COUNT -le 2 ] 
    then 
     echo "$file has only whitespace changes" 
     # svn revert "$file" 
    fi 
done