6

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

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

所以我开始使用:

svnsync init DEST SRC
svnsync sync DEST

每次修改 repo 大约需要 0.5 秒!

幸运的是,我的回购只有 200 次修订......所以要等几分钟。但是有 200,000 或 2,000,000 次修订的成熟项目呢!

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


有什么比“svnsync”更快从云端下载你的仓库的吗?

4

4 回答 4

1

我在拥有数十万修订版的存储库集合中遇到了同样的问题。这是我解决它的方法:

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

现在您已准备好在您的主服务器上运行 svnsync。这将从您的转储停止的地方继续。

于 2011-04-11T14:36:39.760 回答
1

就在这里。VisualSVN 分布式文件系统 (VDFS)执行的复制比通过svnsync. 此外,镜像的 VDFS 存储库是可写的。

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

于 2020-03-23T15:54:20.687 回答
0

好吧,显然您可以自己在服务器上备份它,然后将其压缩并下载。或者你不能下载所有的历史。

但是这个问题的意义何在?这有点学术,因为你的问题已经解决了。

于 2010-02-08T03:50:22.213 回答
0

在 OP 的情况下,您没有对 svn 服务器的控制台访问权限svnsync(本质上是svn checkout从 URL 1svn commit到 URL 2 的组合),这与您将获得的一样好。

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

请注意,您需要将hooks目录移动到hooks-original其他地方,以便镜像不会使用它们 - 特别是如果您在原始存储库上有一个提交后挂钩调用svnsync sync!

于 2012-11-17T03:32:36.417 回答