最好的方法来创build一个SVN镜像?

我目前正在研究设置SVN镜像的最佳方法。 我目前看到有三种可能性,都有自己的缺点:

  • 有一个SVN post-commit-hook,通过svnsync阻塞和同步。 这里的问题很明显,在数据被转移到镜像之前,提交被阻塞。
  • 有一个SVN post-commit-Hook,它是非阻塞的,并通过svnsync进行同步。 在这里,我看到了下面这个更微妙的问题:想象一下,有人在BIG文件中检查,而不久之后检测到一个小文件。 因为提交是非阻塞的,所以两个svnsync进程可以同时运行,而小文件可以在通往镜像的路上超过BIG文件(这看起来非常时间紧迫,不太可能,尽pipe原则上可行)。 他们的修改将交换。
  • 每十五分钟同步一次cron-job。 同样的问题,如果提交时间超过15分钟,显然是时间延迟。

我忘记了可能性吗? 我有什么问题吗? 有任何想法吗? 已经谢谢你了!

也许我应该注意到,第二种可能性是由不同的网站build议的。 例如见http://www.kirkdesigns.co.uk/mirror-svn-repository-svnsync

你可以尝试一种类似于我们在Atlassian上使用的方法

http://blogs.atlassian.com/developer/2008/11/subversion_replication_at_atla.html

免责声明:我目前是Atlassian员工,但没有参与实施此解决scheme(只维护它)

正如我在上面的评论中所说,从远程存储库运行svnsync的行为是确定性的。 它不能无序地应用变更集。 因此,使用远程存储库的唯一问题是由于更改集传播而导致的滞后量。