如何加快SVN更新?

如何加快SVN更新?,svn,tortoisesvn,Svn,Tortoisesvn,我们有一个相当大的SVN存储库。添加代码越多,执行SVN更新的时间就越长。我们将svn:externals添加到一些项目中重复出现的文件夹中,例如在各种网站上的。这有帮助,但没有那么多 减少更新时间和提高SVN速度的最佳方法是什么?听起来您在一个存储库中有多个项目。在适当的地方把它们分开会给你很大的帮助 由于Git存储/处理更改的方式,据说Git比Subversion快得多,但我没有使用它的第一手经验。有一些常见的性能调整。SVN非常重I/O,因此可以选择更快的硬盘(在两端)。为服务器添加更多内

我们有一个相当大的SVN存储库。添加代码越多,执行SVN更新的时间就越长。我们将
svn:externals
添加到一些项目中重复出现的文件夹中,例如在各种网站上的。这有帮助,但没有那么多


减少更新时间和提高SVN速度的最佳方法是什么?

听起来您在一个存储库中有多个项目。在适当的地方把它们分开会给你很大的帮助


由于Git存储/处理更改的方式,据说Git比Subversion快得多,但我没有使用它的第一手经验。

有一些常见的性能调整。SVN非常重I/O,因此可以选择更快的硬盘(在两端)。为服务器添加更多内存。确保您的客户端有一个经过碎片整理的硬盘(适用于Windows)


您使用的访问方法也很重要。存储在远程文件系统上的存储库(使用file:///access)将比svnserve或带有mod_svn的Apache慢得多。如果有一个简单的文件共享库,请考虑使用其中一个。

确保您连接到服务器的速度与千兆以太网一样快。 确保服务器在阵列中具有快速磁盘。
当然,只查看您需要的内容。

这不是一个真正的答案,但了解svn如此重I/O的原因之一可能很有趣,因为它在.svn/text base目录中额外存储了每个文件的一个副本。这使得本地差异操作速度更快,但占用了大量的硬盘空间和I/O


有详细信息。

如果它是一个较旧的SVN存储库(甚至是非常新的,但设置不理想),则可能使用较旧的BDB风格的存储库数据库。有新的笔记。从一个改变到另一个;t太硬-转储整个历史记录,使用新的svn文件系统格式重新初始化它,然后重新导入。同时,过滤回购转储以删除无用信息的整个签入(例如,我已删除某人签入的20MB以上tarball文件)也可能很有用

就一般速度而言,一个高质量(速度快)的硬盘驱动器和用于基于操作系统的缓存的额外内存在提高SVN工作速度方面很难出错

在客户端,如果您通过PuttoiseSVN设置了对外部存储库机器的SSH访问,那么还可以启用SSH压缩,这也会有所帮助


编辑:SVN v1.5还有一个工具,可以帮助将基于FSFS的SVN存储库拆分为多个目录,这些目录本身可以链接到不同的驱动器轴上。如果您有数千个修订版本,这也会有所帮助-如果没有其他原因,只是在数千个版本中查找一个文件需要时间(您可以通过查看IOwait时间来判断这是否是一个问题)

如果您在存储库的根目录中有许多文件夹,并且您的本地副本反映了存储库,然后尝试将单一本地副本分割成多个单独的可下载文件夹,并分别更新这些文件夹,这将比一个大文件夹快。

根据我自己的经验(即:未通过任何实际测试),特别是如果SVN repo服务器是远程的,则使用外部似乎会减慢速度。如果你在多个地方有重复的代码(比如你的FCK编辑器),我倾向于使用外部代码,因为保持这些文件的同步性和可管理性比更新速度更重要——不过,你可以考虑使用符号链接来引入重复的代码。(如果您使用的是Windows XP,您可以使用)。

我们已经将代码库拆分为几个同级模块,并编写了Ant脚本,这样一个开发人员就可以一次处理一个模块,而不用担心其他模块中发生了什么

  • 顶级生成脚本触发所有模块生成脚本
  • 外部库不是存储在Subversion中,而是使用ApacheIvy从网络驱动器中提取的。(将其视为内部Maven存储库)
  • 模块之间的依赖关系也使用Ivy进行管理

通常,开发人员每周需要更新他们的整个树几次,但这可以在午餐/咖啡休息前轻松完成。

ToToToiseSVN默认情况下会在后台查看文件更改,我发现这会降低我的机器速度。我更改了配置以排除所有内容,然后只包括我签出的目录。您还可以关闭背景检查。这两种设置都位于“图标覆盖设置”节点中。

禁用对包含工作副本代码的文件夹进行病毒检查。这导致我的更新速度增加了一倍。

使用读取访问权限(即限制某些人/组的读取访问权限)将大大降低存储库的速度。尤其是以某种特殊方式(例如针对windows域)进行身份验证时。
当然,写访问权限也是如此,但写的频率比读的频率低。限制写访问可能比限制读访问更重要,有时慢的svn操作,特别是在许多外部操作中,与DNS相关。 看起来svn对每个svn执行DNS查找:外部,即使是相对的。
将您的svn服务器主机名添加到/etc/hosts或修复resolv.conf可能会很有用。

您如何设置服务器,是否使用服务器?如果是,哪一个?不要使用reshard工具!我用它做了很多测试,它减慢了存储库的速度。请注意,使用1.5分片的简单导入可以提高存储库的速度。禁用病毒检查可以纠正我在更新/提交时遇到的一些问题。