2012-03-29 71 views
1

我有一個目前擁有代碼,文檔和可交付成果的Subversion版本庫。這變得混亂和難以管理,所以我想分成三個版本庫。如何在不丟失歷史的情況下將部分Subversion版本庫移至新版本?

如何將原始存儲庫(將包含純代碼)的子部分移至新的DocumentationDeliverables存儲庫而不會丟失歷史記錄?例如:

<old_repos>\Docs 
<old_repos>\Deliverables 
<old_repos>\Src 

...變爲:

<docs_repos> 
<deliverables_repos> 
<src_repos> 

我已經看到了很多關於一個倉庫內四處移動文件夾職位和其他人展示如何將一個全庫移動到另一個,但沒有任何建議如何移動子集。這可能嗎?

回答

1

您可以使用svndumpfilter。有一個在文檔有說明,雖然

  • 你不能(我最後一次嘗試)使用--deltas轉儲 - 它不支持。我認爲--incremental是確定的,雖然
  • 編輯的所有文件通常是指精心編輯轉儲文件,這是一種痛苦,因爲它是二進制和文本的混合路徑。我通常不得不刪除創建目錄的前幾個修訂版,並修改其中的一個修訂版以創建正確的新目錄。

這需要一點努力,但我已經成功地做了幾次。

1

沒試過,並沒有親自測試

您將使用svnadmin的轉儲,svnadmin的負載和過濾流(命令稍微Unixish式)

1創建原始回購的完全轉儲:svnadmin dump . > full.dump

2-4過濾轉儲並保留唯一修訂,與所需的子目錄相關:cat full.dump | svndumpfilter include DIR-PATH --drop-empty-revs --renumber-revs --skip-missing-merge-sources --preserve-revprops > DIR-PATH.dump

5-7對於每個新的空回購:svnadmin load . --parent-dir trunk --ignore-uuid < DIR-PATH.dmp

在最壞的情況下,新的回購將獲得不/trunk/*.* data-trees,但/trunk/DIR-PATH/*.*,這很容易被一個大招消除所有

PS後刪除空DIR-PATH - 我寫我的文字後,才發現:How to move a single folder from one Subversion repository to another repository?

相關問題