【问题标题】:How do I migrate a newer SVN repository to an older version?如何将较新的 SVN 存储库迁移到旧版本?
【发布时间】:2009-11-04 19:34:05
【问题描述】:

不久前,我使用 tortoiseSVN 创建了一个本地存储库。 现在我想将存储库迁移到我的DreamHost 帐户。

我将文件移了过去,但 DreamHost 似乎使用的是旧版本的 SVN

当我发出命令时

svnadmin load 'repository dir'

它吐回来

svnadmin: 预期的 FS 格式 '2'; 找到格式“4”

解决方案?

【问题讨论】:

    标签: svn dreamhost migrate


    【解决方案1】:

    编辑:您的消息是由于您使用 较新 版本的服务器创建了目标存储库,然后尝试使用 加载转储>旧版本的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,以启用 propchanges:

      #!/bin/sh
      exit 0
      

      之后你就可以开始了:

      svnsync init [DREAMHOST_URL] [OWN_REPO_URL]
      
      svnsync sync [DREAMHOST_URL]
      

      然后所有修订都将流向您的新存储库..

      【讨论】:

      • 根据 SVN 文档,自 1.0 版以来不应该存在向后兼容性问题,尽管我从未尝试过。但是 OP 描述中的“4”很奇怪,从他们给出的命令中并不清楚到底做了什么……我希望有某种回复(参考转储:svnbook.red-bean.com/nightly/en/…
      • 转储格式超时更改。因此 svn 1.1 客户端无法理解来自 svn 1.6 客户端的转储格式。这正是他报告的问题
      • 实际上,我几乎可以肯定他报告的是 svnadmin "old version" 无法将转储加载到由 svnadmin "new version" 创建的存储库中。我以前应该看到的。我已经对 1.6 -> 1.4 的转储进行了快速迁移测试,它就像一个魅力:-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多