0

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

4

1 回答 1

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. find 将搜索所有-type f不在 .svn 目录下的文件 ( ) ( -prune)
  2. 对于他们每个人,svn info将收集您需要的信息并grep过滤掉其他所有信息。

据此(对不起,在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 分钟。不确定它是否足够

于 2017-06-19T16:33:07.857 回答