本文档描述的是 Subversion 1.2。如果您正在运行更新版本的 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 选项执行替换。不会更改任何文件内容,也不会联系存储库。这类似于在工作副本 .svn/ 目录上运行一个 Perl 脚本,该脚本运行 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 发布