2013-06-28 38 views
3

我正在尋找能夠顯示多久提交svn修改文件的內容。我希望能夠看到哪些文件經常發生更改,發生頻率如何。最好還應該按目錄對「報告」進行分組,以便能夠看到每個項目的變化頻率。svn - 每個文件或目錄的提交頻率

哪個工具提供這種能力?

(如果該事項 - 我還使用Maven和語言主義主要是JAVA)

+0

我相信這是以前問/答 http://stackoverflow.com/questions/402964/tool-to-generate-change-reports-from-subversion-logs – BillH

回答

1

雖然有SVN內部命令生成報告,我會建議使用魚眼鏡頭的工具Atlassian的嘗試。 它是一個付費工具,但是提供了大量的細節,特定用戶提交的文件數量,提交的文件數量,並以圖形格式提供報告。

2

在Subversion中沒有標準的工具可以做到這一點。但是,我可以看到一種可能的方式,但可能需要一段時間。

首先,您需要生成存儲庫中所有文件的列表。這應做到:

$ svn ls -R $REPO 

然後,你可以使用它作爲輸入,並以某種方式生成每個文件的報告:

$ svn ls -R $REPO | while read $file 
do 
    here be dragons 
done 

我們需要擺脫文件(現在的BASH和Kornshell具體)的:

$ svn ls -R $REPO | while read $file 
do 
    [[ $file == */ ]] && continue 
    here be dragons 
done 

然後,我們需要弄清楚如何計算所有的變化。 svn log應該這樣做。如果再算上那些由無非是破折號所有線路,應該給我們一個計數:

$ svn ls -R $REPO | while read $file 
do 
    [[ $file == */ ]] && continue 
    count=$(svn log $REPO/$file | grep "^--*$" | wc -l) 
    echo "$REPO/$file: $count" 
done 

沒有與此的幾個問題:

  • 我假設你打算從存儲庫的根目錄。如果不是,您可能需要考慮目錄條目。
  • 在他們的名字中有一個古怪的空白文件的問題。如果文件沒有空白(我假設你的源文件沒有)或者只有一個空格,並且在名稱的前面或末尾沒有空格,這將起作用。但是,雙空格,製表符等將會產生問題。
  • 這會很慢,並且沒有真實的報告,只有文件和計數列表。
  • 這不處理刪除的文件。如果文件已從存儲庫中刪除,則不會在此程序中列出。
  • 這個程序是狗慢。在我的測試中,每個文件需要大約一秒鐘的時間。開始吧,吃午飯,喝杯咖啡。也許你可以騎到大西洋城去玩一些胡扯。應該在你回來的時候完成。

這是一個開始。您可以通過svn log中的-r參數來限制日期範圍。如果某個文件中的大部分修訂都來自兩年前,那麼您可能並不在意文件是否進行了大量修改。而且,這可能是shell腳本的限制。該邏輯可以移植到Python或Perl,並且可以在那裏完成更多。

0

「讀取$文件」 ,例如它應該是「讀取文件時」,不應該有$。 否則它工作正常!