如何将新版 SVN 代码库迁移到旧版本?

3

我之前使用TortoiseSVN创建了一个本地代码仓库。

现在,我想将该仓库迁移到我的DreamHost帐户。

我已经将文件移动过去,但是似乎DreamHost正在使用较旧的SVN版本。

当我执行命令时:

svnadmin load 'repository dir'

它会返回以下信息:

svnadmin: 预期使用的文件系统格式为'2'; 实际文件系统格式为'4'

解决方案?

2个回答

5

编辑: 您的信息是由于您使用新版本的服务器创建了目标存储库,然后尝试使用svnadmin旧版本加载转储而导致的。请阅读下面的正确操作。


我不理解svnadmin load部分,您之前是否使用svnadmin dump创建过转储文件?这通常是跨版本移植存储库的最佳选择,因为格式不应更改。

所以您应该在使用原始存储库的版本(最新的SVN版本)上执行以下操作:

svnadmin dump <repos_path> > dump_file

在目标服务器上(最旧的SVN版本):

svnadmin create <newrepos_path>
svnadmin load <newrepos_path> < dump_file

如果你的代码库很大,那么在备份时可以使用--deltas选项,因为这些备份可能会非常大。

如果你已经使用了该选项但备份失败了,请说明各自的版本并提供更多细节。


2
如果导出不起作用,您也可以尝试使用svnsync将内容迁移到新存储库中: 创建DreamHost存储库后,请创建一个简单的pre-revprop-change钩子,只需退出0即可启用属性更改。
#!/bin/sh
exit 0

在此之后,您可以开始:

svnsync init [DREAMHOST_URL] [OWN_REPO_URL]

svnsync sync [DREAMHOST_URL]

然后所有的修订版本都会流动到您的新存储库中。

根据 SVN 文档,自 1.0 版本起不应该存在向后兼容问题,尽管我从未尝试过。但 OP 描述中的“4”很奇怪,从他们给出的命令不清楚到底做了什么......我希望能得到某种回复(参考转储:http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate)。 - RedGlyph
转储格式随时间改变。因此,svn 1.1客户端无法理解来自svn 1.6客户端的转储格式。这正是他报告的问题。 - Peter Parker
1
实际上,我几乎可以确定他报告的是 svnadmin“旧版本”无法将转储加载到由 svnadmin“新版本”创建的存储库中造成的故障。我之前应该看到那个问题。我已经快速测试了从1.6->1.4的转储迁移,效果很好 :-) - RedGlyph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接