我们有一个相当大的SVN存储库.随着我们添加代码越多,执行SVN更新的时间越长越长.我们添加svn:externals
到了一些项目中重复的文件夹,比如各种网站上的FCKeditor.这有帮助,但不是那么多.
减少更新时间和提高SVN速度的最佳方法是什么?
如果它是一个较旧的SVN存储库(或者甚至是新的,但没有最佳设置),它可能使用较旧的BDB样式的存储库数据库. http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs有关于新版本的说明.从一个变为另一个并不太难 - 转储整个历史记录,使用新的svn格式的文件系统重新初始化它并重新导入.同时过滤repo-dump以删除无用信息的完整签入也是有用的(例如,我删除了某人已签入的20MB + tarball文件).
就一般速度而言 - 在提高SVN工作速度方面,基于操作系统的缓存的质量(快速)硬盘和额外内存很难出错.
在客户端,如果您通过PuttyAgent进行tortoisesvn设置以便SSH访问外部存储库计算机,您还可以启用SSH压缩,这也可以提供帮助.
编辑: SVN v1.5还有fsfs-reshard.py工具,可以帮助将基于FSFS的svn存储库拆分为多个目录 - 这些目录本身可以链接到不同的驱动器主轴上.如果你有成千上万的修订版,这也可能有所帮助 - 如果除了找到一个文件之外没有其他原因需要时间(并且你通过查看IOwait时间告诉你是否存在问题)
禁用对包含工作副本代码的文件夹的病毒检查.这导致我的更新速度提高了一倍.
这不是一个真正的答案,但可能有趣的是,知道svn之所以如此I/O重的原因之一就是它在.svn/text-base目录中存储了每个文件的一个额外副本.这使得本地差异操作速度很快,但却占用了大量的硬盘空间和I/O.
http://subversion.tigris.org/issues/show_bug.cgi?id=525有详细信息.