我们有一个包含大约 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 循环:
您有一个 SVN 1.0 之前的存储库,并且想要将其升级以使用现代版本。
提交到现有存储库的项目使用了 svn:externals,它引用了旧存储库 URL。在这种情况下,您需要使用类似svndump工具在将转储文件加载到新服务器之前,对转储文件执行正则表达式以修复 URL。(在较新版本的 SVN 中,您可以使用通配符来修复此问题,但您可能必须执行转储/加载来修复旧版本。)
您正在转换存储库格式(例如从 BDB 转换为 FSFS)。请注意,如果您有 BDB 存储库,您确实应该考虑迁移到 FSFS,因为从 SVN 1.8 开始,BDB 已弃用。
您的存储库是使用旧版本的 SVN 创建的,并且您想要利用最新 SVN 中较新的性能和增量功能(例如SVN 1.6 添加了表示共享)。
请注意,情况 #1 和 2 几乎是你真正需要进行转储/加载循环。
另外,请记住,SVN 转储文件将不是包含旧存储库中的存储库钩子脚本、服务器端配置文件或锁。它将仅包含版本化数据。加载新存储库后,您将需要手动传输这些内容。