2014-06-10 37 views
0

有一個標準的顛覆佈局的一個分支:SVN負載突降到確切的文件夾

Repo_1 repo_root |-branches |-branch_one |-tags |-trunk

而第二個倉庫, Repo_2 repo_root |-branches |-tags |-trunk |-folder1

我要出口Repo_2/trunk/folder1 content to Repo_1/branches/branch_on E /文件夾1

我正在做的文件夾轉儲: svnrdump dump svn://mysvnserver/Repo_2/trunk/folder1 > folder1.dump

然後加載到我的Repo_1svnadmin load Repo_1 --parent-dir branches/branch_one < folder1.dump

並獲得以下Repo_1結構: repo_root |-branches |-branch_one |-trunk |-folder1 |-tags |-trunk

獲得樹幹摺疊呃我不需要那裏。有什麼方法可以將我的「folder1」直接插入「branch_one」

+0

爲什麼不'SVN MV && SVN rm'加載到倉庫後? –

回答

3

重新仔細閱讀和SVN本書全面Filtering Repository History,支付警告

你忘特別注意,那轉儲文件包含所有相對路徑,只包括在文件和--parent-dir變化中轉儲節點開始的轉儲節點提到的掛載點,而不是相對位置

每個轉儲文件將創建一個有效的資料庫,但因爲他們在原來的版本庫的精確保存路徑。這意味着,即使您的存儲庫僅用於您的calc項目,該存儲庫仍然會有一個名爲calc的頂級目錄。如果您希望您的幹線,標籤和分支目錄位於存儲庫的根目錄中,則可能希望編輯轉儲文件,調整Node-pathNode-copyfrom-path標頭,以便它們不再具有第一個計算/路徑組件

從我自己的經驗,我更喜歡總是過濾引擎之後svndumpfilter include,即使轉儲與svnrdump創建僅回購樹的一部分:它產生較少(0)錯誤或svnadmin load。例如,遠程移動REPO/trunk/lib對本地存儲庫相同的路徑(也默認存儲庫樹已經存在)意味着我

>svnrdump dump URL/trunk/lib > full.dmp 
>svndumpfilter include --pattern "*lib*" --drop-empty-revs --renumber-revs <full.dmp> filtered3.dmp 

include --pattern只是因爲簡單的include lib產生壞的結果,但它可以動手相關唯一的問題)

過濾轉儲可以輕鬆裝入

>svnadmin load Repo --parent-dir/< filtered3.dmp 
<<< Started new transaction, based on original revision 1 
    * adding path : trunk/lib ... done. 
    * adding path : trunk/lib/lib01.txt ... done. 

------- Committed new rev 2 (loaded from original rev 1) >>> 

而 「啞巴」 傾倒在負載嘗試

>svnrdump dump URL/trunk/lib > dump.dmp

報錯

>svnadmin load repo2 < dump.dmp 
<<< Started new transaction, based on original revision 1 
    * adding path : trunk ...svnadmin: E160020: File already exists: filesystem 'bcf62090-928b-9f49-8008-455204e6d81f', transaction '1-1', path '/trunk'