重新组织subversion存储库的最佳方法是什么?

时间:2012-06-29 14:39:22

标签: svn

所以挑战是:

我们有一个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一样简单吗?

2 个答案:

答案 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

这是更简单的方法,因为您不必执行某些“危险”操作。