1

所以挑战是这样的:

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

4

2 回答 2

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)。

于 2012-12-21T10:14:21.460 回答
1

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

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

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

于 2012-06-29T14:40:58.310 回答