svn switch — Update working copy to a different URL.
svn switch URL [PATH]
switch --relocate FROM TO [PATH...]
This subcommand updates your working copy to mirror a new URL—usually a URL which shares a common ancestor with your working copy, although not necessarily. This is the Subversion way to move a working copy to a new branch. See the
section called “Switching a Working Copy” for an in-depth look at switching.
--revision (-r) REV --non-recursive (-N) --quiet (-q) --diff3-cmd CMD --relocate --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR
If you're currently inside the directory vendors which was branched to vendors-with-fix and
you'd like to switch your working copy to that branch:
$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix . U myproj/foo.txt U myproj/bar.txt U myproj/baz.c U myproj/qux.c Updated to revision 31.
And to switch back, just provide the URL to the location in the repository from which you originally checked out your working copy:
$ svn switch http://svn.red-bean.com/repos/trunk/vendors . U myproj/foo.txt U myproj/bar.txt U myproj/baz.c U myproj/qux.c Updated to revision 31.
You can just switch part of your working copy to a branch if you don't want to switch your entire working copy.
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, the URL scheme, or any part of the URL which leads to the repository itself. Rather than checkout a new working copy, you can have the svn
switch command “rewrite” the beginnings of all the URLs in your working copy. Use the --relocate option
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/.
$ svn checkout file:///tmp/repos test A test/a A test/b …
$ mv repos newlocation $ cd test/
$ svn update svn: Unable to open an ra_local session to URL svn: Unable to open repository 'file:///tmp/repos'
Be careful when using the --relocate option. If you mistype the argument, you might end up creating nonsensical URLs within your working copy
that render the whole workspace unusable and tricky to fix. It's also important to understand exactly when one should or shouldn't use --relocate.
Here's the rule of thumb:
If the working copy needs to reflect a new directory within the repository, then use just svn switch.
If the working copy still reflects the same repository directory, but the location of the repository itself has changed, then use svn switch --relocate.