2014-01-21 128 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