我们计划在悉尼的另一个办公室建立一个 SVN 镜像存储库。我们在两个位置都使用 VisualSVN 服务器 v2.5.7。
我决定用svnsync
它来做。起初我想同步我们所有的存储库,当所有存储库都与镜像存储库同步时,调度程序将在svnsync
每个午夜调用。
它可以同步我们的一个存储库的 167 个修订版。但是在第 168 版中,我们有一个无法同步的大文件(大约 250 MB 的压缩 oracle 文件)。即使我修改了本地和远程服务器的超时,它也不起作用。它一次坚持大约一小时,并给我以下错误:
传输文件数据......................svnsync: E175002: PUT of '/ {some path} /{ bigfile }.zip': 无法发送请求正文:已建立的连接被主机中的软件中止。<{目标网址}>
httpd-custom.conf
以下是我在VisualSVN(本地、镜像)的 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 小时。