2009-10-04 123 views
1

我在svn存儲庫中有代碼,稱之爲存儲庫A.現在說我需要將內容移動到存儲庫B,但存儲庫B已經在其他項目中處於活動狀態。是否可以將特定目錄從存儲庫A移動到存儲庫B,保留文件歷史記錄?通常情況下,遷移整個倉庫到新的服務器,我會做:將目錄遷移到不同的svn存儲庫

svnadmin dump -r 0:179 rep_a > rep_a.dump 
svnadmin create rep_b 
svnadmin load rep_b < rep_a.dump 

然而,這種作用在整個倉庫,並假定庫B是空的,(我認爲)開始。我當然可以導出有問題的目錄並將其導入到存儲庫B中,但是我失去了版本歷史記錄。

是否有一種簡單的方法將特定目錄從A移動到B而不會丟失版本歷史?

回答

3

比方說,你想要的rep_a目錄trunk/project複製到rep_b,你必須使用這個命令:

svnadmin dump rep_a | svndumpfilter include trunk/project | svnadmin load rep_b 

相關rep_a將被添加到的rep_b歷史的修訂。

當然要小心,並做好備份。另外,如果你有共同的目錄,這可能會很棘手,那麼你將不得不從轉儲中刪除目錄創建(以避免創建兩次相同的目錄)。

+1

謝謝!所以我認爲目錄的路徑是相同的,所以rep_a上的trunk/project變成了rep_b上的trunk/project?以防萬一,在遷移過程中是否有簡單的方法來改變路徑?因此,例如干線/項目變成幹線進口/項目? – astrofrog 2009-10-04 14:54:28

+1

有一個選項'svnadmin load --parent-dir'。如果你需要更復雜的東西,我建議你看看這個舊的Perl腳本(如果你有一個Perl解釋器):http://www.coelho.net/svn-merge-repos.html。 Python中還有一個,但我從來沒有使用它,除了做一些簡單的測試:http://www.orcaware.com/svn/wiki/Svnmerge.py – RedGlyph 2009-10-04 15:46:03

+0

這是否與存儲庫是死的工作?你可以檢查和迴應這裏http://stackoverflow.com/questions/24523774/importing-older-code-with-revision-history-to-a-new-svn-repository – Krunal 2014-07-05 03:31:30

相關問題