更改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 switch
或svn 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,并将root
和uuid
列值更改为新的。 您可以通过发行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