2009-05-29 90 views
75

我最近移動了SVN服務器,現在我打算將工作副本從我的電腦重新安置到新的服務器上。但我得到最奇怪的錯誤。 我做的:svn切換錯誤 - 是不一樣的存儲庫

svn switch http://99.99.99.new/svn/company/project/trunk/web 

,但我得到

svn: 'http://99.99.99.old/svn/company/project/trunk/web' 
is not the same repository as 
'http://99.99.99.new/svn/company/project' 

移動使用dump和進口由... ...和回購根是http://99.99.99.new/svn/company/project

。你們有什麼想法什麼可能是錯誤的? 非常感謝

回答

127

嘗試使用

svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web 

正如Sporino在評論中指出,因爲Subversion 1.7,有一個單獨的relocate命令:

svn relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web 
+0

感謝..它的工作:d – 2009-05-29 12:23:08

+0

+1,我居然發現這個尋找一個答案:) – Unreason 2010-05-07 14:11:32

+0

+1,對於相同如上 – 2011-08-08 08:50:21

1

您需要使用--relocate選項:

svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web 

參見svnbook fo r更多細節。

4

switch命令使用relocate命令行參數。

svn switch documentation

有時候管理員會修改版本庫的「基本位置」 - 換句話說,該資源庫的內容不會改變,但使用的主要URL來訪問的根倉庫確實。例如,主機名可能會更改,或URL模式,或者可能只是導致存儲庫的路徑。您可以讓svn switch命令「重寫」工作副本中所有URL的起始位置,而不是檢出新的工作副本。使用--relocate命令進行替換。沒有文件內容被更改,庫也沒有聯繫。這與在運行s/OldRoot/NewRoot /的工作副本.svn /目錄上運行perl腳本類似。

23

此外,在TortoiseSVN中有「重新定位」選項,您應該在這些情況下使用(而不是「開關」選項)。

7

做一個SVN搬遷我的最好的辦法是這樣的:

svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \ 
         new_url_or_repository 

這樣,使用從svn info命令正確舊的URL,你肯定不輸錯了一個,這是一個常見的錯誤。

如果一切正確,將會提示您新位置的身份驗證詳細信息(如果它們不同)。

發出命令後,一定要仔細檢查變動已在看的URL參數,發行

svn info 

搬遷後,更新你的工作拷貝,檢查一切正常:

svn update 

我2C ..