我从Linux提示符使用TortoiseSVN和svn clinet。svn日志和责怪svn:外部
在我们的项目中,我有一个svn:external属性的目录。我试图挖掘svn的历史,看看谁和什么时候做了改变。我没有找到一种方法来查看目录的属性日志或责备/注释目录svn属性?
怎么办?
我从Linux提示符使用TortoiseSVN和svn clinet。svn日志和责怪svn:外部
在我们的项目中,我有一个svn:external属性的目录。我试图挖掘svn的历史,看看谁和什么时候做了改变。我没有找到一种方法来查看目录的属性日志或责备/注释目录svn属性?
怎么办?
试试这个命令:
$ 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
作品。但它也会显示常规提交(即添加/删除文件)。我的项目太大,需要很长时间才能完成相关的提交。命令是否可以优化? – dimba
你可以编写一个脚本来首先在目录上做一个'svn log',然后把你看到正则表达式'^ \ s + M \ s + $ directory_name $'的那些条目拉出来。这将很快为您提供以某种方式修改目录的所有修订版本。由于它是一个目录,因此一些属性必须已经更改。然后,你可以在这些修订版上做一个'svn log --diff -v --depth = empty'。比简单的流水线稍微复杂一点,但如果你在Perl或Python上有一半的体面,那么编写这样的脚本不需要太长的时间。 –
建立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
可能的复制[怎么办你在SVN中获取文件/文件夹属性的历史记录?](http://stackoverflow.com/questions/1230389/how-do-you-get-the-history-of-a-file-folder-property-in -svn) –