重新组织 Subversion 存储库的最佳方式



所以挑战是这样的:

我们有一个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
Project

A 和 Project B 实际上只是 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移动一样简单?

使用 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复制现有存储库)。

我想你想保留提交历史记录,即使没有明确编写?

可以为 ProjectX 创建一个新的存储库,然后使用 svn:externals 属性将项目 A 和 B 链接到其中。它就像普通 FS 中的符号链接。您可以在此处阅读快速示例。

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

最新更新