2012-11-15 57 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