2012-12-19 96 views
75

我目前SVN結構:更改SVN倉庫URL

Path: . 
URL: svn://someaddress.com.tr/project 
Repository Root: svn://someaddress.com.tr 
Repository UUID: ------------------------------------- 
Revision: 10297 
Node Kind: directory 
Schedule: normal 
Last Changed Author: ---- 
Last Changed Rev: 9812 
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010) 

但我們的項目(因此SVN服務)將在sub.someaddress.com.tr而不是someaddress.com.tr工作(someaddress.com.tr會被其他地方很快重定向到)。

由於它是開發服務器,我不知道該怎麼做。我需要使用svn switch還是svn switch --relocate?另外,我需要切換svn根someaddress.com.tr或項目分支someaddress.com.tr /項目

回答

146

考慮到了Apache Subversion服務器將被移動到這個新的DNS別名:sub.someaddress.com.tr

  • 使用Subversion 1.7或更高版本,使用svn relocate。當SVN服務器的位置發生變化時使用重定位。 switch僅在您想將本地工作副本更改爲另一個分支或另一個路徑時使用。如果使用TortoiseSVN,您可以按照TortoiseSVN Manual的說明操作。如果使用SVN命令行界面,請參考this section of SVN's documentation。該命令應該是這樣的:

    svn relocate svn://sub.someaddress.com.tr/project

  • 繼續使用/project考慮到你的資料庫的實際內容可能不會改變。

注意:svn relocate在版本1.7之前不可用(感謝ColinM的信息)。在舊版本中您可以使用:

svn switch --relocate OLD NEW 
+33

SVN移居不可預1.7。對於1.7以前,你會使用'svn switch --relocate OLD NEW' – ColinM

+0

附加的TortoiseSVN鏈接非常有幫助,謝謝 – MOnsDaR

+0

不知道'switch'命令我在網上發現的所有文檔都是爲了更新的版本。 –

5

在我的情況下,svn relocate命令(以及svn switch --relocate)由於某種原因失敗(也許回購不正確地移動,或別的東西)。我遇到了這個錯誤:

$ svn relocate NEW_SERVER 
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46' 

我不想重新下載整個存儲庫,所以我找到了解決方法。它適用於我的情況,但通常情況下我可以想象很多事情會被破壞(所以無論是備份工作副本,還是準備在出現問題時重新檢出整個回購)。

回購地址及其UUID保存在工作副本中的.svn/wc.db SQLite數據庫文件中。只需打開數據庫(例如在SQLite瀏覽器中),瀏覽表REPOSITORY,並將rootuuid列值更改爲新值。您可以通過發行svn info NEW_SERVER找到新回購的UUID。

再次,將此視爲最後的手段方法。

+0

@IgorGanapolsky:你能更具體嗎? –

+1

如果您仔細閱讀我的文章,我不建議運行任何命令。我建議編輯SQLite數據庫。 –

3

前後Grepping的URL可能會給你一些安心:

svn info | grep URL 

    URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    Relative URL: (...doesn't matter...) 

並在您的版本檢查(爲> 1。7)保證,svn relocate是正確的事情來使用:

svn --version 

最後,加入到上述情況,如果你的資料​​庫網址變更還涉及協議的變化,你可能需要前後陳述網址(也see here

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal 

所有course.Thereafter的一個單行,獲得良好的感覺,所有的進展順利:

svn info | grep URL: 

如果你喜歡它的感覺,更自信的一點,新的svn的URL連接和工作:

svn status --show-updates 
svn diff