迁移整个 SVN 服务器

use*_*880 3 linux svn centos

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

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

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

我可以svnadmin dump /usr/local/subversion/*然后导入它,还是需要通过回购来进行回购?

myr*_*ack 5

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

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

通常,您只需要在以下情况下执行 svnadmin 转储/加载循环:

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

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

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

  4. 您的存储库是使用旧版本的 SVN 创建的,您希望利用最新 SVN 中的新性能和细节化功能(例如SVN 1.6 添加的表示共享)。

请注意,情况 #1 和 2 几乎是您实际需要执行转储/加载循环的唯一时间。

另外,请记住,SVN 转储文件将包含存储库挂钩脚本、服务器端配置文件或来自旧存储库的锁。它将只包含版本化数据。加载新存储库后,您需要手动传输它们。