我们计划在我们位于悉尼的另一个办公室拥有一个 SVN 镜像存储库。我们在两个位置都使用 VisualSVN 服务器 v2.5.7。
我决定使用 svnsync
去做吧。起初我想同步我们所有的存储库,当所有存储库都与镜像存储库同步时,调度程序将调用 svnsync
每个午夜。
它可以同步我们存储库之一的 167 个修订版。但是在第 168 次修订版中,我们有一个无法同步的大文件(大约 250 MB 的压缩 oracle 文件)。即使我修改了本地和远程服务器的超时,它也不起作用。它一次坚持大约一小时,并给我以下错误:
Transmitting file data .......................svnsync: E175002: PUT of '/{some path}/{bigfile}.zip': Could not send request body: An established connection was aborted by the software in your host machine. <{target url}>
以下是我在
httpd-custom.conf
中所做的修改VisualSVNs(本地,镜像)的Apache服务器中的文件:Timeout 300000
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 300000
<IfModule dav_svn_module="">
# Enable a 1 Gb Subversion data cache for both fulltext and deltas.
SVNInMemoryCacheSize 1048576
SVNCacheTextDeltas On
SVNCacheFullTexts On
#SVNCompressionLevel 9
</IfModule>
我什至将超时增加到 600000 或更多,但结果是一样的。我在 http 模式下启动了两个服务器。在我们的本地网络上,它可以在 20 分钟内同步所有存储库。
关于我们互联网连接的上传速度约为 256 Kbs,我不希望这次是在互联网环境中。但是我希望 SVN 服务器等待我为它们设置的超时时间,因为我们可以轻松地将这些大小的文件提交到其他使用 CollabNet Server 的 SVN 服务器。只需 2 小时即可成功提交。我认为 300000 秒超时远不是 2 小时。
最佳答案
将您的 VisualSVN 服务器实例升级到最新版本。
从 Subversion 1.8 开始,serf
使用性能更好的 HTTP 客户端库代替旧的 neon
.因此,您在使用 svnsync
时可能会看到较少的问题。通过不稳定的低带宽连接。
Regarding our internet connection's uploading speed that is about 256 Kbs
从版本家族 3.0 开始,VisualSVN 服务器企业版有一个特殊功能,可以帮助您消除低带宽瓶颈:Multisite Repository Replication (VDFS) .
与基于直写代理的复制系统相比,基于 VisualSVN 分布式文件系统的 Subversion 存储库复制速度快 10 倍以上(据我所知,您现在正在使用直写代理)。
除此之外,VDFS 支持锁定、复制用户访问权限并确保在所有复制的存储库上一致执行 SVN Hook 脚本。
关于svn - 在 svnsync 中处理大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359739/