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 switch或svn 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)
在之前和之后获取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)
就我而言,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,然后将root和uuid列值更改为新值。您可以通过发出找到新存储库的UUID svn info NEW_SERVER。
同样,将此作为最后的方法。