我最近移动了SVN服务器,现在我想将工作副本从我的计算机重新定位到新服务器。但我得到了最奇怪的错误。 我这样做:
svn switch http://99.99.99.new/svn/company/project/trunk/web
但是我得到了
svn: 'http://99.99.99.old/svn/company/project/trunk/web'
is not the same repository as
'http://99.99.99.new/svn/company/project'
移动是通过转储和导入进行的......并且repo根位于http://99.99.99.new/svn/company/project
你们有什么想法可能有什么不对吗? 非常感谢
答案 0 :(得分:130)
尝试使用
svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web
Sporino在评论中指出,自Subversion 1.7以来,有一个单独的relocate
命令:
svn relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web
答案 1 :(得分:23)
另外,在TortoiseSVN中有“Relocate”选项,您应该在这种情况下使用它(而不是“Switch”选项)。
答案 2 :(得分:7)
进行SVN重定位的最佳方式是:
svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \
new_url_or_repository
通过这种方式,使用svn info
命令中的正确旧URL,您肯定不会输入错误的错误,这是常见的错误之一。
如果一切正确,系统会提示您输入新位置的身份验证详细信息(如果不同)。
发出命令后,请务必仔细检查是否已应用更改,并查看URL参数,发出
svn info
重新定位后,更新您的工作副本,检查一切正常:
svn update
我的2c ..
答案 3 :(得分:4)
将relocate
命令行参数用于switch
命令。
有时管理员可能会更改存储库的“基本位置” - 换句话说,存储库的内容不会更改,但用于到达存储库根目录的主URL会更改。例如,主机名可能会更改,或URL架构,或者可能只是导致存储库的路径。您可以让svn switch命令“重写”工作副本中所有URL的开头,而不是签出新的工作副本。使用--relocate命令进行替换。没有更改文件内容,也没有联系存储库。它类似于在工作副本上运行perl脚本.svn /目录运行s / OldRoot / NewRoot /.
答案 4 :(得分:1)
您需要使用--relocate选项:
svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web
有关详细信息,请参阅svnbook。