所以挑战是:
我们有一个SVN存储库服务器,它包含多个项目:
http://server.com/svn/projectA/trunk
http://server.com/svn/projectA/branches
http://server.com/svn/projectA/tags
http://server.com/svn/projectB/trunk
http://server.com/svn/projectB/branches
http://server.com/svn/projectB/tags
ProjectA和ProjectB实际上只是ProjectX的组件。现在每个人都想要的是:
http://server.com/svn/projectX/trunk/ProjectA
http://server.com/svn/projectX/trunk/ProjectB
http://server.com/svn/projectX/branches/OldVersion/ProjectA
http://server.com/svn/projectX/branches/OldVersion/ProjectB
http://server.com/svn/projectX/tags/PreMajorChange/ProjectA
http://server.com/svn/projectX/tags/PreMajorChange/ProjectB
我在想svndump,但是然后重新检查所有数据排序意味着我们的修订版数量将超过100,000。不确定这是最好的方式(或者这是唯一的方法)。
或者它会像svn move一样简单吗?
答案 0 :(得分:3)
使用svn move
。它将保留历史记录,并将最小化SVN存储库大小。
首先,您在根级别检出存储库,然后执行移动:
mkdir -p projectX/{trunk,branches/OldVersion,tags/PreMajorChange}
svn add projectX
svn move projectA/trunk projectX/trunk/ProjectA
svn move projectA/branches/* projectX/branches/OldVersion/ProjectA
svn move projectA/tags/* projectX/tags/PreMajorChange/ProjectA
svn move projectB/trunk projectX/trunk/ProjectB
svn move projectB/branches/* projectX/branches/OldVersion/ProjectB
svn move projectB/tags/* projectX/tags/PreMajorChange/ProjectB
svn commit . -m "Restructuring"
首先在测试存储库中尝试(例如,通过svnadmin hotcopy
复制现有的存档)。
答案 1 :(得分:1)
我想你想保留提交历史记录,甚至没有明确写出来?
您可以为ProjectX创建一个新的repo,然后使用svn:externals属性将项目A和B链接到它中。它就像普通FS中的符号链接一样。您可以阅读快速示例here。
这是更简单的方法,因为您不必执行某些“危险”操作。