现在我有一个大约40000个文件的svn文件夹。我想得到所有文件的最新提交修订版。
res/image/1.png 27123
res/map/101/1.png 14654
我试过pysvn。它有一个名为list_recursive的函数,但它的工作原理却很慢。
所以我想知道是否有快速的方法来获得结果。
修改
最后,我发现完成此操作的最快方法是调用" svn list -v --recursive>> output.txt ",然后使用python读取output.txt文件数据。
它比使用pysvn库要快得多。
答案 0 :(得分:0)
如果纯粹的bash解决方案符合您的要求:
for i in `find . -type d -name .svn -prune -or -type f`; do
echo "$i: " $(svn info $i 2>/dev/null | grep '^Last Changed Rev')
done
简要说明:
-type f
)(-prune
)svn info
将收集您需要的信息,grep
将过滤掉其他所有信息。根据this(抱歉,在redbeans版本上找不到引用):
访问存储库
仅限在URL上运行
所以它应该非常快。无论如何,我做了这个小测试:
time (
for i in `find . -type d -name .svn -prune -or -type f`; do
echo "$i: " $(svn info $i 2>/dev/null | grep '^Last Changed Rev')
done | wc
)
925 3325 87256
real 0m17.231s
user 0m2.648s
sys 0m1.416s
不幸的是我的工作副本是在NFS上,所以时间可能完全不适用于你,你可能预计最多12分钟。不确定它是否快。