本手册描述的是 Subversion 1.1 版本。如果你使用的是更新版本的 Subversion,我们强烈建议你访问 https://svnbooks.subversion.org.cn/ 并查阅适合你 Subversion 版本的书籍。

名称

svn switch — 将工作副本更新到不同的 URL。

概要

svn switch URL [PATH]
switch --relocate FROM TO [PATH...]

描述

此子命令会更新你的工作副本以镜像一个新的 URL——通常是一个与你的工作副本有共同祖先的 URL,但也不一定。这是 Subversion 将工作副本移动到新分支的方法。查看 名为“切换工作副本”的部分 以深入了解切换。

其他名称

sw

更改

工作副本

访问仓库

切换

--revision (-r) REV
--non-recursive (-N)
--quiet (-q)
--diff3-cmd CMD
--relocate
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR

示例

如果你当前位于目录vendors该目录分支到vendors-with-fix并且你希望将你的工作副本切换到该分支

$ 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.

要切换回原分支,只需提供你在仓库中最初检出工作副本的位置的 URL

$ 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.

提示

如果你不想切换整个工作副本,可以只将工作副本的一部分切换到分支。

有时管理员可能会更改仓库的“基本位置”——换句话说,仓库的内容没有改变,但用于访问仓库根目录的主 URL 会改变。例如,主机名、URL 方案或指向仓库本身的任何 URL 部分都可能发生变化。与其检出一个新的工作副本,你可以让 svn switch 命令“重写”你工作副本中所有 URL 的开头。使用--relocate选项来执行替换。不会更改任何文件内容,也不会联系仓库。这类似于在你的工作副本上运行一个 Perl 脚本.svn/目录,该脚本会运行 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'

$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
$ svn update
At revision 3.

警告

使用--relocate选项时要小心。如果你输入了错误的参数,你可能会在你的工作副本中创建无意义的 URL,从而导致整个工作区无法使用并且难以修复。同样重要的是要了解何时应该或不应该使用--relocate。以下是经验法则

  • 如果工作副本需要反映仓库中 内部 的一个新目录,那么只使用 svn switch

  • 如果工作副本仍然反映同一个仓库目录,但仓库本身的位置发生了变化,那么使用 svn switch --relocate

TortoiseSVN 官方中文版 1.14.7 发布