Subversion:还有比“svnsync”更快的东西吗?

时间:2010-02-08 03:47:36

标签: svn version-control svnsync

所以我将我的subversion存储库存储在某些云上(例如code.google.com),但由于种种原因,我需要将我的代码设置为非公开。

我决定需要下载整个存储库并迁移到我自己的svn服务器。

所以我开始使用:

svnsync init DEST SRC
svnsync sync DEST

回购的每次修订花了大约0.5秒!

幸运的是我的回购只有200次修改......所以等了几分钟。但是那些有200,000或2,000,000个版本的成熟项目呢!

... 2e6 * 0.5 / 60/60 / 24~约11天!


从云端下载您的仓库比“svnsync”更快吗?

4 个答案:

答案 0 :(得分:1)

嗯,显然你可以在服务器上备份它然后压缩并下载它。或者你可以不下载所有历史记录。

但问题的重点是什么?这有点学术,因为你的问题已经解决了。

答案 1 :(得分:1)

我在我的存储库集合中遇到了同样的问题,这些存储库有数十万个修订版。以下是我如何解决这个问题:

  1. 在镜像上创建空存储库。
  2. 创建我的存储库的gziped转储文件。 (我的备份系统已经这样做了)(注意:这一步需要一夜之间才能将我的巨型存储库发送到整个大陆)
  3. scp(或您最喜欢的远程文件复制技术),转储文件到镜像服务器。
  4. 加载存储库,确保指定--force-uuid
  5. 在版本0上设置revprops。我刚刚使用了一个正常配置的空白存储库并查看了它的rev 0。
  6. 现在您已准备好在主服务器上运行svnsync。这将从您的转储停止的地方继续。

答案 2 :(得分:1)

是的,有。 VisualSVN Distributed File System (VDFS)执行的复制至少比BOO!执行的复制快10倍。此外,镜像的VDFS存储库是可写的

该技术使分布式团队可以以相同的速度使用Subversion存储库,就像它们都在同一个本地网络中一样。利用VDFS技术,可以在多个站点和位置之间复制主存储库,从而使读取操作的速度提高了1000%。例如,可以在短短10分钟内检出50Gb工作副本。通过常规Internet连接执行的同一任务至少需要一个小时。

答案 3 :(得分:0)

在OP的情况下,如果您没有对svn服务器的控制台访问权限,svnsync(从URL 1到svn checkout到URL 2基本上是svn commit)是很好,因为你会得到。

但是如果您确实可以访问服务器,则有比svnsync更快的方法。构建镜像的一个好方法是使用svnadmin hotcopy制作存储库的初始副本,然后使用svnsync init --allow-non-empty选项added in subversion 1.7将其转换为镜像。这也为您提供了钩子等的备份,svnsync将不会这样做。

请注意,您需要将hooks目录移动到hooks-original或其他某些内容,以便镜像不会使用它们 - 特别是如果您在原始文件上有一个提交后挂钩回复调用svnsync sync