更改SVN存储库URL

时间:2012-12-19 01:22:33

标签: svn svn-repository

我目前的SVN结构:

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 root someaddress.com.tr 或项目分支 someaddress.com.tr/project

6 个答案:

答案 0 :(得分:182)

鉴于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,因为您的存储库的实际内容可能不会改变。

注意:版本1.7之前svn relocate不可用(感谢ColinM提供的信息)。在旧版本中,您将使用:

    svn switch --relocate OLD NEW

答案 1 :(得分:7)

在之前和之后点击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

最后,添加上述内容,如果您的存储库网址更改也涉及更改协议,您可能需要在网址之前说明之前(同时{{3 }})

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

当然,所有这一切都在一条线上。此后,感觉良好,一切顺利:

svn info | grep URL:

如果你觉得这样,更多的自信,新的svn repo URL已连接并正常工作:

svn status --show-updates
svn diff

答案 2 :(得分: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'

我不想重新下载整个存储库,所以我找到了一个解决方法。它适用于我的情况,但通常我可以想象很多事情都会被破坏(所以要么备份你的工作副本,要么准备好在出现问题时重新检查整个仓库)。

repo地址及其UUID保存在工作副本的.svn/wc.db SQLite数据库文件中。只需打开数据库(例如在SQLite浏览器中),浏览表REPOSITORY,然后将rootuuid列值更改为新值。您可以通过发出svn info NEW_SERVER来找到新仓库的UUID。

再次,将此视为最后的手段。

答案 3 :(得分:3)

如果您使用的是 TortoiseSVN 客户端,那么您可以按照以下步骤操作

右键单击源目录,然后单击SVN Relocate Image#1

之后,您需要将 URL 更改为您想要的,点击确定,这将需要几秒钟的时间。Image#2

答案 4 :(得分:1)

如果U想要提交一个新的空仓库,您可以签出新的空仓库并提交到新的远程仓库。
检出一个新的空存储库不会删除您的本地文件。
尝试: 例如, 远程回购网址:https://example.com/SVNTest cd [YOUR PROJECT PATH] rm -rf .svn svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME] svn add ./* svn ci -m"changed repo url"

答案 5 :(得分:0)

在 Eclipse 中,断开项目(Team > Disconnect)并删除元数据,然后将项目连接到新的存储库。 over the project, right clic, team, disconnect