我们拥有包含多个项目的庞大SVN存储库,我们需要将其中一个移动到另一个SVN存储库。
执行此操作的直接方法(通过svnadmin转储转储数据库,通过svndumpfilter对其进行过滤并将其重新加载到新存储库不起作用,因为存储库太大(转储文件大约为500GB)和svndumpfilter以及其他类似程序永远不会结束。
我使用snvsync将特定项目复制到新存储库。它除2点之外还可以正常工作:
我在新存储库中获得的最终文件夹结构是:
/回购/中继/了projectA /
当我尝试将projectA分支(复制)到/ repos / branches / projectA时出现错误: “存储库永久移动到http:/ host / repos /;请重新定位”
任何尝试在与trunk相同的级别上创建文件夹都会产生相同的错误。 最后我想进入“strandard”文件夹结构,如:
/repos/projectA/trunk
/repos/projectA/branches
/repos/projectA/tags
但没有找到克服上述错误的方法。
答案 0 :(得分:3)
由于显而易见的原因,svnsync副本应该是只读的 - 如果您提交它,然后继续从原始同步,则副本将不同。当你试图在之后同步它时它会出错,但这是唯一的原因。它没有技术上的原因,它应该是RO,事实上,一旦你有一个副本和你的原始模具,它被设计成一个相同的副本,你可以开始用作备份替代品。
使用它的问题是因为您仍在使用引用原始回购的原始工作副本。您需要删除WC并重新签出,或使用svn switch --relocate
命令告诉它存储库已移动。我不明白如何使用svnsync从原始仓库中获取不同的布局(除非你的意思是你想要在它同步后改变布局 - 你仍然可以转储,过滤和加载小型仓库到新的)
您是否尝试过rsvndump,它允许您转储部分存储库。