更改SVN存储库URL

我目前的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将被redirect到别的地方)。

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

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

  • 在Subversion 1.7或更高版本中,使用svn relocate 。 当SVN服务器的位置发生变化时使用重定位。 只有在您想将本地工作副本更改为另一个分支或另一个path时才使用此switch 。 如果使用TortoiseSVN,您可以遵循TortoiseSVN手册的指示。 如果使用SVN命令行界面,请参考SVN文档的这一部分 。 该命令应该是这样的:

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

  • 继续使用/project因为你的仓库的实际内容可能不会改变。

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

  svn switch --relocate OLD NEW 

在我的情况下, 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' 

我不想重新下载整个存储库,所以我find了一个解决方法。 它在我的情况下工作,但通常我可以想象有很多事情可以被打破(所以无论是备份你的工作副本,或准备重新检查整个回购,如果出现问题)。

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

再次强调,这是最后的手段。

在URL之前和之后清理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 

最后,加上上面的内容,如果你的版本库更改也涉及协议的变化,你可能需要声明url之前之后 ( 这里也请参见这里 )

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

所有在一个单一的课程。此后,得到良好的感觉,一切顺利:

 svn info | grep URL: 

如果你觉得这样,更多的自信,新的SVN回购url连接和工作:

 svn status --show-updates svn diff