澄清巩固多个svn回购

时间:2014-01-21 12:03:43

标签: svn version-control merge consolidation

我们在特定的物理位置/mnt/data1/repos

中有多个SVN存储库

回购的结构如下

repos
     |
     App1
         |
         trunk
              |
              module1
              |
              module2
         |
         branches
     |
     App2
         |
         trunk
              |
              module1
              |
              module2
         |
         branches
     |
     App3
         |
         trunk
              |
              module1
              |
              module2
         |
         branches

我们正尝试将多个回购合并到单个回购,如下所示/mnt/data2/repo

     repo
     |
     trunk
         |
         App1
            |
            module1
            |
            module2
         |
         App2
            |
            module1
            |
            module2
         |
         App3
            |
            module1
            |
            module2

我在/mnt/data2/repo

使用svnadmin创建了一个repo

创建目录/mnt/data2/repo/trunk/App1/mnt/data2/repo/trunk/App2& /mnt/data2/repo/trunk/App3使用svn mkdir

然后我尝试{app} svn dump /mnt/data1/repos/App1/,使用svndumpfilter include trunksvn import进行过滤,/mnt/data2/repo/trunk/App1 /mnt/data2/repo/trunk/App1。它失败,因为svnadmin dump --quiet /mnt/data1/repos/App1 > App1.dmp svndumpfilter include --targets /tmp/list.txt < App1.dmp > App1Trunk.dmp svnadmin create /mnt/data2/repo/ svn mkdir --parents svn://<IP>:<PORT>/trunk/App1 -m "Creating MC directory" svnadmin load --quiet --parent-dir trunk/App1 /mnt/data2/repo < App1Trunk.dmp 不是回购的根。

请告诉我执行此合并的最佳方式。 重点是我们应该保留所有回购的修订历史记录。

修改

我执行了以下步骤。

trunk/App1/trunk/module1

当我尝试加载转储时,我发现它仍在创建trunk/App1/trunk/module2trunk/App1/moudle*等。帮助我将数据加载到{{1}}。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用svn mv来移动:

$ svn mv --parents $URL/repos/App1/trunk/module1 $URL/repos/trunk/App1/module1

这会将您的存储库移动到新结构,您仍将拥有自己的历史记录。移动整个项目时,您必须与存储库的用户进行协调。确保用户知道发生了什么。事实上,协调通常是这些举措的最大问题。

svnadmin dumpsvnadmin load的问题在于它可以移动的是有限的。即使将旧项目移动到新节点,也会保留旧项目的目录结构。由于Subversion存储库是一个巨大的巨型项目,并且您可以正式提交同时涉及多个分支,主干和项目的更改,因此Subversion坚持保持其结构。您可能可以将某些内容移动到新的根节点,但除此之外您无法真正编辑该结构。