2008-12-11 77 views
64

我有一臺託管我的Subversion代碼庫的服務器。該服務器當前是Windows Server 2003框,我的IT管理員希望將其更新爲Windows Server 2008將Subversion版本庫移到另一臺服務器

這意味着我將需要移動我的Subversion存儲庫,同時服務器建立起來,並想知道將存儲庫移動到新服務器的最佳實踐是什麼。

看起來,網上通緝,推薦的方法是使用:

svnadmin dump /path/to/repository > repository-name.dmp 

然後用:

svnadmin create repository-name 
svnadmin load repository-name< repository-name.dmp 

要導入庫。

上面的方法看起來是否是最好的方法?

+1

這就是我要做的事 – cciotti 2008-12-11 20:43:29

+3

它的‘推薦的方法’,那麼爲什麼你懷疑這是一個好方法?無論如何,「最佳」意味着什麼? – hop 2008-12-12 13:13:43

回答

57

是的,轉儲和加載存儲庫是一種方法。如果並且只有在確定沒有人會在複製過程正在進行時訪問存儲庫(或者您可以執行存儲庫的「熱複製」,可以處理這些情況),則直接複製存儲庫文件夾是可行的選擇以安全的方式)。

您還需要重新簽出所有工作副本,或使用svn switch命令,該命令僅重寫URL。更方便的方法是使用TortoiseSVN的重新定位命令,這樣可以降低重定位過程中出現錯誤的風險。

4

如果您使用的是文件系統類型存儲庫,則可以從字面上取出包含存儲庫的文件夾並將其移動。如果您正在更換服務器,則可能需要使用「重新定位」命令更改本地工作目錄查找存儲庫的位置。

27

我的恢復腳本是這樣的:

svnadmin create repository-name --fs-type fsfs 
svnadmin load repository-name --force-uuid < repository-name.dmp 

第一線,確保倉庫使用FSFS後端(這是許多人士建議,包括這個:How FSFS is Better,並顛覆AFAIK新版本使用作爲默認)。 FSFS是Subversion文件系統實現的名稱。

第二行保留存儲庫的UUID,以方便過渡(沒有--force-uuid開關,工作副本重定位將失敗)。

一些鏈接:

9

您還可以使用svnsync移動存儲庫;這樣您就可以傳輸所有數據,而無需將「舊」存儲庫關閉。這也是我知道從託管環境獲取數據的唯一途徑,在託管環境中,您沒有shell訪問權限或訪問存儲庫轉儲權限。

1

最簡單的方法是使用:。

svnadmin hotcopy path/to/your_current_directory /path/to/your_destination_directory 
相關問題