views:

4641

answers:

7

Hello,

I have recently moved the SVN server and now i am tring to relocate the working copies from my computer to the new server. But i get the strangest error. i do :

svn switch http://99.99.99.new/svn/company/project/trunk/web

but i get

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'

the move was made with dump and import ... and the repo root is on http://99.99.99.new/svn/company/project

Do you guys have any ideas of what might be wrong ? thanks a lot

+37  A: 

Try using

svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web
Steef
thanks .. it worked :D
solomongaby
+1, as I actually found this looking for an answer :)
Unreason
A: 

You need to use the --relocate option :

svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web

see svnbook for more details.

Peter Parker
thanks for the suggestion, but as BastardSaint wrote you need to specify both from and to URLS
solomongaby
Just more of the poor UI design that irks me about subversion and SVK. There may be exotic use-cases that require you to specify two URLs, but the tools should just take the damn default. In SVK, for example, I shouldn't *NEED* to specify merge source and target, but I do.
Chris Kaminski
+1  A: 

Use the relocate command line parameter to the switch command.

svn switch documentation

Sometimes an administrator might change the "base location" of your repository — in other words, the contents of the repository doesn't change, but the main URL used to reach the root of the repository does. For example, the hostname may change, or the URL schema, or perhaps just the path which leads to the repository. Rather than checkout a new working copy, you can have the svn switch command "rewrite" the the beginnings of all the URLs in your working copy. Use the --relocate command to do the substitution. No file contents are changed, nor is the repository contacted. It's similar to running a perl script over your working copy .svn/ directories which runs s/OldRoot/NewRoot/.

crashmstr
+8  A: 

Also, in TortoiseSVN there is "Relocate" option, which you should use in situations like these (instead of the "Switch" option).

Pascal Lindelauf
agreed ... but i was on ubuntu so that options was not available :)
solomongaby
+1 for the Tortoise help.
jachguate
+3  A: 

My best way to do an SVN relocation is this:

svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \
                      new_url_or_repository

In this way, using the right old url from the svn info command, you are sure to not enter a wrong one, which is one of the common erros.

If everything is correct, you will be prompted with the auth details for the new location, if they are different.

After issuing the command, be sure to double check that the change has been applied looking at the URL parameter, issuing

svn info

After relocating, update your working copy, to check that everything is ok:

svn update

My 2c ..

GabrieleV
A: 

yea... but how do we fix the problem>???

bill
Please read the answers.
wRAR
A: 

Option --relocate in the following case would help, but it is not what is wanted.

The same error can also be shown in case of different host names in the URL, i.e. example.com and www.example.com:

https://example.com/svn/project/trunk
https://www.example.com/svn/project/branches/branch1

It was expected by me that Subversion checks for Repository UUID only (see "svn info" output).:

shell> svn info https://example.com/svn/project/branches/branch1
    Path: project/branches/branch1
    URL: https://example.com/svn/project/branches/branch1
    Repository Root: https://example.com/svn/project/
    Repository UUID: 8b463868-8872-4d1e-8976-d81ae7ed2deb
    Revision: 204
    Node Kind: directory
    Last Changed Author: user
    Last Changed Rev: 204
    Last Changed Date: 2010-09-07 16:12:57 +0000 (Tue, 07 Sep 2010)

However, the check is slightly elaborated and compares host names as well. So, with the output of 'svn info' shown above, it is impossible to switch by this command (without option --relocate which does different thing):

shell> svn switch https://example.com/svn/project/trunk
pakseykin