2

我有一個Subversion版本庫,裏面有幾個項目。我希望「切斷」一個或多個這些項目,並將它們移到自己的存儲庫,理想情況下具有完全保真度(即保持所有版本歷史記錄不變)。切片Subversion版本庫的一部分?

這甚至可能嗎?如果是這樣,技術是什麼?

編輯/澄清:我瞭解分支和標籤。這不是我要問的。我想採用現有的存儲庫並將其拆分爲幾個較小的存儲庫,可能位於不同的物理介質上。

回答

2

首先得到一個到你的SVN倉庫的日期轉儲:

svnadmin dump repo/ 

接下來,過濾庫,使用類似

svndumpfilter include --drop-empty-revs --renumber-revs trunk/myProj1 trunk/myProj2 

然後,創建新的回購,並添加行李箱,標籤和分支目錄(在沒有這三個目錄的情況下,此步驟將失敗):

svnadmin create newRepo 
svn co file:///tmp/newRepo newRepo-checkout 
svn mkdir newRepo-checkout/trunk/ newRepo-checkout/branches/ newRepo-checkout/tags 
svn commit -m "Core directory structures created" newRepo-checkout/ 

有了這3個目錄,一個現在可以加載轉儲:

svnadmin load newRepo 

一旦加載完成後,就可以開始使用新的回購!

幾個教程鏈接:

http://grumbel.blogspot.com/2008/09/splitting-svn-repository.html
http://2tbsp.com/node/88

+0

是的,但我不認爲你已經理解了問題。你的例子展示瞭如何在同一個repository_中創建一個分支,這根本不是我所要求的。我想採取現有的存儲庫,並將其拆分爲幾個較小的存儲庫(可能位於物理不同的介質上)。 –

+0

嗯,在這種情況下,您希望獲得repo的轉儲,然後使用svndumpfilter僅從repo中獲取所需內容,然後使用新的分割repo使用svn load來加載過濾的轉儲。這裏有一些很好的教程:http://grumbel.blogspot.com/2008/09/splitting-svn-repository.html,http://mikemason.ca/blog/2005/10/splitting-merging-and-organizing- a-subversion-repository/ – chown

+0

已更新的答案提供了步驟 – chown