2012-11-08 52 views
1

我的一個項目是在Subversion倉庫中(我們稱之爲svn:// oldserver /),它會被合併到一個新的倉庫中(比如說svn:// newserver /)。Subversion網關重新編號修訂?

該項目大量使用svn:externals來鏈接某些庫的源代碼。所有外部都包含一個修訂版本號,以便我目前可以查看舊版本的代碼,包括這些庫。

「oldserver」將被轉儲並導入到「newserver」中。然後將外部設備更改爲指向新服務器,但這僅適用於HEAD修訂版。舊版本的兩個問題:

  • 導入將會移動所有修訂版本,但不是svn:externals中的相應數字。
  • 導入還將保留原始存儲庫名稱(svn:// oldserver /),而不是使用新名稱。

我不知道是否有這樣的東西一樣顛覆一個網關服務器,我可以在名爲SVN下運行:// OLDSERVER /並會簡單地從SVN獲取數據:// NEWSERVER但經過重新編號版本號。有人知道這樣的事情嗎?

備選方案1:在將「oldserver」導入到「newserver」之前,用類似svndumptool的工具對外部編號重新編號。但是如果我犯了一個錯誤,我將無法在之後糾正它。這就是我拒絕這個解決方案的原因。

方案2:讓舊服務器運行,只需配置爲只讀。它只是在服務器硬盤上佔用更多空間,但如果我找不到更好的解決方案,我可能會使用此解決方案。

回答

2

最安全的方法是運行某種腳本,在舊版本庫中爲每個外部目標特定版本創建標記,然後將該實際外部定義指向該標記的HEAD修訂版本。鑑於

-r1234 svn://oldserver/libraries/lib1 lib1 

外部定義做出這樣

svn cp -r 1234 svn://oldserver/libraries/lib1 svn://oldserver/libraries/tags/lib1-r1234 

標籤和改變外部

svn://oldserver/libraries/tags/lib1-r1234 lib1 

這些標籤會那麼穩定,並指向相應的修訂在新的存儲庫在轉儲和導入之後,您可以將其從oldserver批量轉換爲newserver

+0

有趣的想法,以避免在未來的問題!你也是對的,它會比我的「另類1」更安全。但是我仍然需要在將轉儲導入到新服務器之前修改轉儲。 – Name