2012-11-15 56 views
1

我從Linux提示符使用TortoiseSVN和svn clinet。svn日誌和責怪svn:外部

在我們的項目中,我有一個svn:external屬性的目錄。我試圖挖掘svn的歷史,看看誰和什麼時候做了改變。我沒有找到一種方法來查看目錄的屬性日誌或責備/註釋目錄svn屬性?

怎麼辦?

+0

可能的複製[怎麼辦你在SVN中獲取文件/文件夾屬性的歷史記錄?](http://stackoverflow.com/questions/1230389/how-do-you-get-the-history-of-a-file-folder-property-in -svn) –

回答

3

試試這個命令:

$ svn log -v --diff --depth=empty $dir 

在包含svn:externals屬性你感興趣的目錄你會看到像這樣的輸出:的

r154474 | dweintraub | 2012-11-14 09:50:20 -0500 (Wed, 14 Nov 2012) | 1 line 
Changed paths: 
    M /branches/ivy/TC-Common-All 

Some utterly useless comment 

Index: . 
=================================================================== 
--- . (revision 154473) 
+++ . (revision 154474) 

Property changes on: . 
___________________________________________________________________ 
Modified: svn:externals 
## -1 +1 ## 
-^/trunk/ivy.dir ivy.dir 
+^/branches/ivy/ivy.dir ivy.dir 
+0

作品。但它也會顯示常規提交(即添加/刪除文件)。我的項目太大,需要很長時間才能完成相關的提交。命令是否可以優化? – dimba

+0

你可以編寫一個腳本來首先在目錄上做一個'svn log',然後把你看到正則表達式'^ \ s + M \ s + $ directory_name $'的那些條目拉出來。這將很快爲您提供以某種方式修改目錄的所有修訂版本。由於它是一個目錄,因此一些屬性必須已經更改。然後,你可以在這些修訂版上做一個'svn log --diff -v --depth = empty'。比簡單的流水線稍微複雜一點,但如果你在Perl或Python上有一半的體面,那麼編寫這樣的腳本不需要太長的時間。 –

+0

建立David的建議,如果你想限制它只是外部,關鍵的「修改:svn:外部評論」。我使用的是grep&tee,如果你使用的是Windows,可以使用[unxutils](http://unxutils.sourceforge.net/)。三通可以用>>重定向替換。在這裏,我告訴它給我的日誌(你可以限制在一個範圍內),然後搜索表達式「Modified:svn:externals」並抓住7行'B'efore和2'A'fter,這給出了我需要的信息。 'svn log -v --diff --depth = empty。 | grep -B 7 -A 2 -e「修改:svn:externals」| tee externalChanges.log' – Damon