本文档尚未完善,内容随时可能更改,可能无法准确描述 Apache™ Subversion® 软件的任何发布版本。将此页面添加为书签或推荐给其他人可能不是明智之举。请访问 https://svnbook.subversion.org.cn/ 查看此书的稳定版本。

名称

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

语法

svn switch URL[@PEGREV] [PATH]

svn 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] 提示

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

TortoiseSVN 官方中文版 1.14.7 发布