2014-01-21 30 views
0

我们在特定物理位置/mnt/data1/repos澄清整合多个SVN回购

多个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 

我在创建使用svnadmin的回购

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

然后我试图做APP1 /mnt/data1/repos/App1/svn dump,使用svndumpfilterinclude trunk过滤,并做了svn 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/module1trunk/App1/trunk/module2等帮助我在将数据加载到trunk/App1/moudle*转储。

+1

[将SVN存储库数据与历史记录作为子文件夹移动到另一个存储库]的可能重复(http://stackoverflow.com/questions/11563031/moving-svn-repositories-data-with-history-as-subfolders-into-另一个仓库) – bahrep

+0

感谢您指出我的答案。但是,当我尝试导入过滤的转储失败。让我尝试'svnadmin import'带'--parent-dir'并更新 – pprakash

+0

没有'svnadmin import'命令。导入过滤转储时会出现什么错误? – bahrep

回答

1

最简单的方法是使用svn mv左右移动的东西:

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

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

svnadmin dumpsvnadmin load的问题在于它可以移动的范围有限。即使将它们移动到新节点,旧项目的目录结构也会被保留。由于Subversion版本库是一个巨大的项目,您可以正式提交一个涉及多个分支,主干和项目的更改,Subversion坚持保持其结构。你也许可以将某些东西移动到新的根节点上,但是除此之外,你不能真正编辑结构。

+0

谢谢。通过组合'svnadmin dump','svndumpfilter','svn load'和'svn mv',我能够成功创建所需的结构。 – pprakash