【问题标题】:How to move project from one SVN repository to another when svnadmin dump does not help当 svnadmin 转储没有帮助时,如何将项目从一个 SVN 存储库移动到另一个
【发布时间】:2011-05-02 11:00:46
【问题描述】:

我们拥有包含多个项目的巨大 SVN 存储库,我们需要将其中一个移动到另一个 SVN 存储库。

直截了当的方法(svnadmin dump 数据库转储,svndumpfilter 过滤并重新加载到新的存储库不起作用,因为存储库太大(转储文件大约 500GB)和 svndumpfilter 和其他类似程序永无止境。

我使用 snvsync 将特定项目复制到新存储库。它工作正常,除了 2 点:

  • 我读到由 svnsync 填充的存储库是只读的。我试图提交对这个存储库的更改(在我删除了阻止我这样做的钩子之后)并且它似乎有效。不过,我不确定它是否会在未来造成麻烦。
  • 我在新存储库中得到的最终文件夹结构是:

    /repos/trunk/projectA/

当我尝试将 projectA 分支(复制)到 /repos/branches/projectA 时,出现错误: "存储库永久移至 http:/host/repos/;请重新定位"

任何创建与主干相同级别的文件夹的尝试都会产生相同的错误。 最后,我想进入“标准”文件夹结构,例如:

/repos/projectA/trunk
/repos/projectA/branches
/repos/projectA/tags

但没有找到克服上述错误的方法。

【问题讨论】:

    标签: svn


    【解决方案1】:

    出于显而易见的原因,svnsync 副本应该是只读的 - 如果您提交它,然后继续从原始同步,副本将不一样。当您之后尝试同步它时,它应该会出错,但这是唯一的原因。没有技术上的理由为什么它应该是 RO,事实上,一旦你有一个副本并且你的原件死了,它被设计为一个 相同 的副本,你可以开始使用它作为备份替代品。

    您使用它的问题是因为您仍在使用引用原始存储库的原始工作副本。您需要删除 WC 并重新签出,或者告诉它存储库已移动 - 使用 svn switch --relocate 命令。我不明白您如何使用 svnsync 来获得与原始存储库不同的布局(除非您的意思是在同步后更改布局以适应 - 您仍然可以转储、过滤和加载小型存储库到新的)

    您是否尝试过rsvndump,它允许您转储部分存储库。

    【讨论】:

    • 我不打算重新同步存储库。我正在寻找一种将存储库的一部分移动到新存储库的方法。完成后,旧存储库中的代码将不再更改/或使用。我已通过删除对原始存储库的任何引用来修改复制的存储库,它工作正常。尽管如此,当我尝试在与主干相同级别的新存储库中创建一个新文件夹时,我得到“永久删除 301 错误”。我猜想它可能与 apache 配置有关,尽管新存储库 webdav 的配置方式与旧存储库相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多