本文档旨在描述 Apache™ Subversion® 的 1.7.x 系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的文档。

名称

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

概要

svn switch URL[@PEGREV] [PATH]

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

描述

此子命令的第一个变体(没有 --relocate 选项)会更新您的工作副本,使其指向新的 URL。这是 Subversion 将工作副本开始跟踪新分支的方法。如果指定了 PEGREV,则会确定在哪个修订版中首次查找目标。有关切换的深入了解,请参阅 名为“遍历分支”的部分

[Note] 注意

从 Subversion 1.7 开始,svn switch 命令默认情况下会要求您将工作副本切换到的 URL 与工作副本当前反映的项目共享一个共同的祖先。您可以通过指定 --ignore-ancestry 选项来覆盖此行为。

如果使用 --force,工作副本中未版本化的阻碍路径不会自动导致切换尝试添加相同路径时失败。如果阻碍路径与存储库中相应的路径类型相同(文件或目录),则它将被版本化,但其内容将在工作副本中保持不变。这意味着阻碍目录的未版本化的子项也可能被阻碍并被版本化。对于文件,阻碍与存储库之间的任何内容差异将被视为对工作副本的本地修改。存储库中的所有属性都将应用于阻碍路径。

与大多数子命令一样,您可以使用 --depth 选项将切换操作的范围限制在特定的树深度。或者,您可以使用 --set-depth 选项在切换目标上设置新的 粘性 工作副本深度。

从 Subversion 1.7 开始,--relocate 选项已弃用。请使用 svn relocate(在 svn relocate 中描述)来执行工作副本重新定位。

选项

示例

如果您当前位于 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.
[Tip] 提示

如果您不想切换整个工作副本,您可以将工作副本的一部分切换到分支,但这通常不建议这样做。很容易忘记您已经这样做了,最终会意外地对已切换和未切换的树部分进行更改和提交。