2014-09-18 152 views
1

我們最近遷移了一個我們的Subversion存儲庫,它的結構只能包含一個項目(即樹幹等位於根目錄),以便多個項目可以被控制在一個存儲庫中。調用svnadmin load時,我們使用--parent-dir選項將所有文件從存儲庫移動到不同存儲庫的子目錄中。當然,由於UUID實際上是一個新的存儲庫,所以UUID不再與舊的存儲庫相同。SVN:使用--parent-dir遷移後重定位本地副本

所以最初存儲庫URL到項目的樹幹看起來是這樣的:

http://subversion/repo/trunk 

現在是這樣的:

http://subversion/repo/project/trunk 

現在我需要遷移主幹我的本地工作副本。我知道我可以從項目文件夾中進行一次打包和重新簽出,但這是一個相當大的存儲庫,這樣做在時間和磁盤空間方面非常昂貴。

有沒有什麼辦法可以告訴svn relocate不僅忽略祖先,而且也忽略存儲庫UUID已經改變的事實?

也許有一種方法可以手動更新.svn文件夾中的元數據以指向正確的回購網址?也許有一種方法可以檢出.svn文件夾中的元數據並將其交換到本地工作副本中?

回答

1
  1. 移居「......改寫工作副本的URL元數據,以反映單純的語法改變。」,即:如果您更改UUID,則無法重新定位 - 新的存儲庫是全新的,無關的老,搬遷意願失敗
  2. 「當然,UUID與舊版本庫不再一樣」 - 真的?!您可以結合--force-uuid | --ignore-uuid負荷階段,以便在至少一個 UUID爲繼承父庫
  3. 您可以使用svnadmin setuuid,以改變現有的存儲庫

這裏的UUID是一種方法,只檢出元-sdn文件夾中的數據

是的。

您可以籤新的URL http://subversion/repo/project/trunk到新的工作副本--depth 'empty',它得到空WC與.svn文件夾,複製|移動舊WC的所有內容(除了舊的元數據.svn文件夾),並同步WC與倉庫,使用svn up --set-depth 'infinity' (超過未來操作的舊深度結賬)

+0

嗯,我試着在設置我的結帳深度的建議。無論如何,它似乎再次檢查所有文件。 – 2014-09-18 17:11:07