迁移整个 SVN 服务器

迁移整个 SVN 服务器

我们有一个包含大约 55 GB 代码的 SVN 服务器,以及第二个全新的 SVN 服务器,目前服务于一个项目。

我想将旧服务器上的所有内容移动到新服务器,以停止使用前者。

旧服务器上有 73 个存储库。

然后我可以svnadmin dump /usr/local/subversion/*导入它吗,还是需要逐个仓库进行?

答案1

在大多数情况下,您只需将存储库目录从旧服务器复制到新服务器即可。但请注意不要覆盖新服务器上已存在的存储库!如有必要,请更新您的配置文件以引用新存储库(这取决于您的特定服务器配置)。

复制目录时,应关闭 Apache/svnserve 进程,这样复制过程中就不会更改内容。如果不希望这样,您可以使用svnadmin hotcopy它在“实时”时复制存储库。有关更多信息,请参阅 SVN 手册:http://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html

一般来说,您只需在下列情况下执行 svnadmin dump/load 循环:

  1. 您有一个 SVN 1.0 之前的存储库,并且想要将其升级以使用现代版本。

  2. 提交到现有存储库的项目使用了 svn:externals,它引用了旧存储库 URL。在这种情况下,您需要使用类似svndump工具在将转储文件加载到新服务器之前,对转储文件执行正则表达式以修复 URL。(在较新版本的 SVN 中,您可以使用通配符来修复此问题,但您可能必须执行转储/加载来修复旧版本。)

  3. 您正在转换存储库格式(例如从 BDB 转换为 FSFS)。请注意,如果您有 BDB 存储库,您确实应该考虑迁移到 FSFS,因为从 SVN 1.8 开始,BDB 已弃用

  4. 您的存储库是使用旧版本的 SVN 创建的,并且您想要利用最新 SVN 中较新的性能和增量功能(例如SVN 1.6 添加了表示共享)。

请注意,情况 #1 和 2 几乎是你真正需要进行转储/加载循环。

另外,请记住,SVN 转储文件将不是包含旧存储库中的存储库钩子脚本、服务器端配置文件或锁。它将仅包含版本化数据。加载新存储库后,您将需要手动传输这些内容。

相关内容