将多个 Subversion 项目合并为一个项目

将多个 Subversion 项目合并为一个项目

几周前,我们从 CVS 迁移到了 Subversion。我选择将每个项目或文件夹(无论它们在 CVS 中叫什么)创建为 Subversion 中的单独项目,并最终得到了推荐的结构:

[svn_path]/Server/
  -- ProjectA/
     -- branches
        -- branch1
        -- branch2
     -- trunk
  -- ProjectB
     -- branches
        -- branch1
     -- trunk

现在我们意识到这在我们的项目中并不是真正可行的方法。不同的项目具有很强的依赖性,并且代码一次提交给许多项目。从分支重新集成会成为一个大问题,我们确实希望重新组织存储库,以便将项目组合成这样:

[svn_path]/Server/
    -- branches
       -- branch1
          -- ProjectA
          -- ProjectB
       -- branch2
          -- ProjectA
    -- trunk
       --ProjectA
       --ProjectB

这是怎么做到的?

为了提供更多细节,我只想补充一下,在 CVS 中我们有所有代码的分支。使用 svn 中选择的布局,我们为每个项目都获得了一个分支,但所有分支都具有相同的名称。现在我想要回到的是,所有代码都应该在同一个分支下,因此每个开发人员只需查看分支来查看需要合并哪些更改。

顺便说一句 - 我已经用 Google 搜索过等等,但没有找到符合我的智力的描述 ;-)

答案1

我假设您将所有内容都放在一个存储库中。这会让事情变得简单得多。

这比你想象的要简单得多:

svn mkdir /svn/path/Server/branches/
svn mv /svn/path/Server/ProjectA/branches/ /svn/path/Server/branches/ProjectA/
svn mv /svn/path/Server/ProjectB/branches/ /svn/path/Server/branches/ProjectB/
svn mkdir /svn/path/Server/trunk/
svn mv /svn/path/Server/ProjectA/trunk/ /svn/path/Server/trunk/ProjectA/
svn mv /svn/path/Server/ProjectB/trunk/ /svn/path/Server/trunk/ProjectB/

在您的真实存储库上尝试此操作之前,您可能需要先复制存储库进行测试。

答案2

对于你所描述的,我建议看看集市(http://bazaar-vcs.org/), git (http://git-scm.com/)或 mercurial(http://mercurial.selenic.com/wiki/)。看起来,与使用 Subversion 相比,使用分布式 VCS 会更好。我个人从 svn 切换到 Bazaar,对此我非常满意。

相关内容