我目前正在研究设置SVN镜像的最佳方法。我目前看到三种可能性都有其自身的缺点:
- 有一个SVN提交后挂钩,它通过svnsync进行阻止和同步。显然,这里的问题是,提交一直阻塞,直到将数据传输到镜像为止。
- 有一个SVN后提交钩子,该钩子是非阻塞的,并且可以通过svnsync进行同步。在这里,我看到了以下更微妙的问题:假设有人签入BIG文件,然后不久有人签入了一个小文件。因为提交是非阻塞的,所以两个svnsync进程可以同时运行,并且小文件可能会在到达镜像的过程中超过BIG文件(这在时间上很紧迫,并且不太可能,尽管原则上是可能的)。他们的修订将互换。
- 与cron作业每15分钟同步一次。如果一次提交花费的时间超过15分钟,并且显然是时间延迟,则会出现同样的问题。
我忘记了可能性吗?我做错了吗?有任何想法吗?已经谢谢你了!
也许我应该指出,第二种可能性是不同网站建议的可能性。例如,请参阅 http://www.kirkdesigns.co.uk/mirror-svn-repository-svnsync
因为提交是非阻塞的,所以两个svnsync进程可以同时运行,并且小文件可能会在到达镜像的过程中超过BIG文件(这在时间上很紧迫,并且不太可能,尽管原则上是可能的)。他们的修订将互换。这是不可能的,svnsync复制提交时将其写入存储库。它们将始终以修订顺序显示。
—
戴夫·切尼