更改SVN存储库URL

Fal*_*gel 105 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)
Run Code Online (Sandbox Code Playgroud)

但我们的项目(因此SVN服务)将工作sub.someaddress.com.tr而不是someaddress.com.tr(someaddress.com.tr将很快重定向到其他地方).

由于它是开发服务器,我不知道该怎么做.我需要使用svn switchsvn switch --relocate吗?另外,我是否需要切换svn root someaddress.com.tr或项目分支someaddress.com.tr/project

Jua*_*nal 190

鉴于Apache Subversion服务器将被移动到这个新的DNS别名sub.someaddress.com.tr:

  • 使用Subversion 1.7或更高版本,请使用svn relocate.当SVN服务器的位置发生变化时,使用重定位.switch仅在您要将本地工作副本更改为另一个分支或其他路径时使用.如果使用TortoiseSVN,您可以按照TortoiseSVN手册中的说明进行操作.如果使用SVN命令行界面,请参考SVN文档的本节.该命令应如下所示:

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

  • /project鉴于您的存储库的实际内容可能不会更改,请继续使用.

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

    svn switch --relocate OLD NEW
Run Code Online (Sandbox Code Playgroud)

  • svn relocate在1.7之前不可用.对于1.7之前,你要使用`svn switch --relocate OLD NEW` (35认同)

Mah*_*ahi 14

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

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

之后,您需要将 URL 更改为您想要的内容,单击“确定”,这将需要几秒钟的时间。图片#2


Fra*_*cke 9

在之前和之后获取URL可能会让您高枕无忧:

svn info | grep URL

  URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
  Relative URL: (...doesn't matter...)
Run Code Online (Sandbox Code Playgroud)

检查您的版本(大于1.7)以确保svn relocate使用是正确的:

svn --version
Run Code Online (Sandbox Code Playgroud)

最后,添加到上面的内容,如果您的存储库URL更改也涉及更改协议,您可能需要声明url 之前之后(另请参见此处)

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal
Run Code Online (Sandbox Code Playgroud)

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

svn info | grep URL:
Run Code Online (Sandbox Code Playgroud)

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

svn status --show-updates
svn diff
Run Code Online (Sandbox Code Playgroud)


Mar*_*cka 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'
Run Code Online (Sandbox Code Playgroud)

我不想重新下载整个存储库,因此找到了解决方法。就我而言,它可以正常工作,但是通常我可以想象到很多事情会被破坏(因此,备份您的工作副本,或者准备在发生问题时重新检查整个存储库)。

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

同样,将此作为最后的方法。