2008-10-22 50 views
2

我大部分時間都在做基本的一些家務管理變更,我們其中一個項目的代碼庫(用log4j代替所有的System.out.println()調用)。如何查找CVS版本之間更改的行數?

我很好奇我用這組更改更新了多少行代碼。

反正有cvs diff或另一個命令得到一個準確的計數有多少行已經改變?

我已經試過

cvs diff -b -B -R 

讓所有的工作目錄的變化(和遞歸子目錄),但對於每一個文件改變了它還會打印出的文件/版本信息,這使得剛剛計數輸出線無用。

任何想法?

回答

3

的濾除diff的輸出多餘的線條和再算上線。

例如,僅grep的開始的行<或>

cvs diff -b -B -R | egrep '^<|>' | wc -l 
+0

這是我最終使用的,畢竟在你發佈之前的幾秒鐘 - 謝謝 – 2008-10-22 20:02:30

+0

使用這個修改後的行會計算兩次對嗎? – 2010-03-08 16:35:33

1

你可以簡單地輸出CVS diff到diffstat。

+0

這很好,雖然它似乎對「jsp/blah.jsp」和「blah.jsp」等文件進行了重複計數。之前不知道diffstat,謝謝! – 2008-10-22 20:01:56

0

怎麼樣確認你已經改變了所有情況下的東西,如:

find . | egrep -v -e '(CVS|<other patterns you don't want>)' | \ 
    xargs egrep -e 'System\.out\.println[(][)]' | wc -l 

,應該給你零。

然後用'log4j'替換第二個egrep中的正則表達式應該使用wc -l返回已更改的行數。

HTH。

歡呼聲,

羅布

5

diffstat實用程序是用於從CVS,SVN或其他差別的輸出得到一些簡單的指標一個很好的工具。

相關問題