当svnadmin转储没有帮助时,如何将项目从一个SVN存储库移动到另一个SVN存储库

时间:2011-05-02 11:00:46

标签: svn

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

执行此操作的直接方法(通过svnadmin转储转储数据库,通过svndumpfilter对其进行过滤并将其重新加载到新存储库不起作用,因为存储库太大(转储文件大约为500GB)和svndumpfilter以及其他类似程序永远不会结束。

我使用snvsync将特定项目复制到新存储库。它除2点之外还可以正常工作:

  • 我读过由svnsync填充的存储库是只读的。我试图提交对此存储库的更改(在我删除阻止我这样做的钩子之后)它似乎工作。不过,我不确定它将来不会引起麻烦。
  • 我在新存储库中获得的最终文件夹结构是:

    /回购/中继/了projectA /

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

任何尝试在与trunk相同的级别上创建文件夹都会产生相同的错误。 最后我想进入“strandard”文件夹结构,如:

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

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

1 个答案:

答案 0 :(得分:3)

由于显而易见的原因,svnsync副本应该是只读的 - 如果您提交它,然后继续从原始同步,则副本将不同。当你试图在之后同步它时它会出错,但这是唯一的原因。它没有技术上的原因,它应该是RO,事实上,一旦你有一个副本和你的原始模具,它被设计成一个相同的副本,你可以开始用作备份替代品。

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

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