2013-05-16 64 views
2

我最近將我的SVN存儲庫從SERVER1遷移到了SERVER2。SVN更新在SVN重新定位後不起作用

  • 在SERVER2上安裝了SVN。
  • 使用svnrdump實用程序來轉儲存儲庫。
  • 使用svndump load實用程序將轉儲文件加載到新的svn服務器。

我在Server1 SVN簽出的工作副本WC從路徑http://SERVER1/project1/data

注意一件事在這裏:

  • 當我把轉儲,SERVER1上的SVN版本爲12345
  • 當我檢查了WC,SVN版本是13456.

現在,使用relocate from tortoise svn on windows,我有重新定位WC到SERVER2 svn到路徑http://SERVER2/project1/data

搬遷是成功的。

在此之後,我正在嘗試從rev-12345到rev-​​13456到http://SERVER2/project1/datacheck-in更改。

但是,這裏是正在發生的事情:

  • 提交操作不顯示被提交的任何文件。
  • 檢查修改是否顯示任何更改。
  • SVN更新顯示錯誤'No Such Revision:13456'。
  • 我更改了WChttp://SERVER2/project1/data上存在的文件,並嘗試提交它。這裏也給出了'No Such Revision:13456'。

我期待,當WC在REV-13456在Server1將在REV-12345從SERVER2遷往http://SERVER2/project1/data,它會顯示所有被這兩個版本之間做出區別。

注:我在上面嘗試,因爲SERVER1將在一段時間內關閉。到目前爲止,這兩個存儲庫都存在。 SERVER1仍在使用中,SERVER2將與SERVER1保持同步。

回答

3

因爲您在稍後的修訂版檢出了您的工作副本,而不是您所在的服務器上存在的副本,所以它沒有參考點來計算更改。這種更新SERVER2的方法將不起作用。您有兩種選擇:

  1. 要正確更新所有缺少修訂的SERVER2,必須對剩餘修訂進行部分轉儲/加載。 svnadmin dump repo_path -r 12346 --incremental,然後加載到新服務器上。它只會轉儲12346的修訂版本。如果您沒有添加SERVER2的其他修訂版本,而這些修訂版本不屬於SERVER1,則此功能纔有效。

  2. 如果您不在意介入的修訂歷史記錄,只想將當時的所有更改作爲1修訂版轉儲到新服務器中,請首先從新服務器進行全新檢查。然後將所有的更改從您的WC從SERVER1複製到SERVER2的WC中並提交。

根據變化的複雜程度,第一種選擇更好,可能更少工作。

+0

謝謝澄清。你能否詳細說明'它沒有參考點來計算變化'。 –

+1

當然,當你從subversion檢出一個工作副本時,它會記住它當前的版本號。這樣,當你做一個SVN更新時,它會發送到服務器,並說讓我從當前修訂版本到HEAD的所有更改。 您從13456版的服務器中檢出了WC,然後重新部署到沒有該版本號的服務器上,因此,無論何時您嘗試執行涉及獲取更改或對該修訂版進行更改的操作時,都無法執行此操作該修訂版在新服務器上不存在。 – ioscode