我想获取svn存储库中所有文件的svn:mime-type属性。在Subversion中执行此操作的最有效方法是什么?
我创建了一个文件,其中包含我的svn存储库中的所有文件(每行一个文件),名为“all-files.txt”,我可以将其用作bash while循环的输入,但这不是很有效。我使用的代码如下所示:
while read ff; do
MIME_TYPE=`svn propget svn:mime-type svn://myrepository/$ff`
echo $MIME_TYPE $ff
done < all-files.txt
以上工作,但速度很慢......我在Perforce中尝试了类似的循环并且性能类似,但Perforce允许我使用“/ ...”语法对所有文件进行操作,如下所示,我希望Subversion有类似的东西。
相比之下,这就是我在Perforce中所做的:
p4 files //depot/...
使用“/ ...”表示法我告诉Perforce对指定目录下的所有文件进行操作,结果的速度要快几个数量级。我计算使用循环需要花费超过38个小时,但使用“/ ...”语法我在几分钟内得到了所有文件的所有答案。
我阅读了Subversion手册中的“glob”部分,但没有看到类似的指定“all-files”的方法。操作Subversion存储库中所有文件的最有效方法是什么?
答案 0 :(得分:0)
大多数 svn 命令支持递归(和非递归)操作的选项-R
和--depth
。它也适用于 propget ,如下所示:
svn propget -R svn:mime-type https://example.org/svn/foobar
如果从工作目录执行命令,则可以使用URL的快捷方式:
svn propget -R svn:mime-type ^/
以上命令以文本形式提供信息。如果文件名或属性包含特殊字符,则可能会导致问题。如果您将此命令用于某种自动化,我建议使用选项--xml
并解析XML文档。
svn propget -R svn:mime-type --xml ^/