使用python

时间:2017-06-17 05:59:00

标签: python svn revision pysvn

现在我有一个大约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库要快得多。

1 个答案:

答案 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

简要说明:

  1. 该搜索将搜索不在.svn目录下的所有文件(-type f)(-prune
  2. 对于他们每个人,svn info将收集您需要的信息,grep将过滤掉其他所有信息。
  3. 根据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分钟。不确定它是否