switch (sw): 将工作副本更新至同一版本库中不同的版本库 URL 路径。

用法:

  1. switch URL[@PEGREV] [PATH]
  2. switch --relocate FROM-PREFIX TO-PREFIX [PATH...]
  1. 将工作副本更新至版本库内一个新的 URL 路径。该行为类似于 “svn update” 命令,用来将工作副本移动到同一版本库内某个分支或标签。如果指定了 PEGREV 版本,它确定首先在哪个版本中查找目标。

    如果指定了 --force 选项,对于工作副本中未版本控制的路径项, 假如切换操作尝试添加相同的路径项,该路径项不会阻碍操作并导致切换失败。 如果阻塞路径项与版本库中的路径项类型相同(文件或目录),则将对该路径项进行版本控制, 但会保留其在工作副本中的内容。

    这意味着未版本控制阻塞目录项的子路径项也可能发生阻塞并接受版本控制。 对于文件,阻塞文件和版本库中文件之间的任何内容差异,都将被视作对工作副本的本地修改。 版本库中的所有属性都将应用于阻塞路径项。

    使用 --set-depth 选项可以在此操作的目标上设置新的工作副本深度。

    默认情况下,如果一个版本库 URL 路径项与工作副本没有公共的受版本控制祖先,Subversion 将拒绝将工作副本路径切换到该新的 URL 路径项。可以使用 “--ignore-ancestry” 选项覆盖此健全性检查。

  2. 不推荐使用 --relocate 选项。此语法等效于 “svn relocate FROM-PREFIX TO-PREFIX [PATH]” 命令。

另请参阅 “svn help update”,以获取用来报告操作而可能输出的字符列表。

例如:

svn switch ^/branches/1.x-release

svn switch --relocate http:// svn://

svn switch --relocate http://www.example.com/repo/project svn://svn.example.com/repo/project

有效选项:  
-r [--revision] ARG : 指定版本 ARG (一些命令也接受 ARG1:ARG2 格式的版本范围),版本参数可以是如下之一:
  • NUMBER 版本号
  • '{' DATE '}' 在指定时间以后的版本
  • 'HEAD' 版本库中的最新版本
  • 'BASE' 工作副本的基准版本
  • 'COMMITTED' 最后提交的版本或基准版本之前的版本
  • 'PREV' 最后提交版本 COMMITTED 的前一版本
-N [--non-recursive] : 已过时,与 --depth=files 相同
--depth ARG : 限制输出深度为 ARG (empty, files, immediates, 或 infinity)
--set-depth ARG : 设置工作副本的新深度为 ARG (exclude, empty, files, immediates, 或 infinity)
-q [--quiet] : 不输出信息,或只输出概要信息
--diff3-cmd ARG : 使用 ARG 作为合并命令
--ignore-externals : 忽略外部定义
--ignore-ancestry : 允许切换到没有公共祖先的节点
--force : 将未版本控制的阻塞项作为修改项
--accept ARG : 指定自动解决冲突的措施:
  • postpone 推迟(简写:p
  • working 使用工作副本
  • base 使用 BASE 版本
  • mine-conflict 冲突位置使用我的内容(简写:mc
  • theirs-conflict 冲突位置使用对方内容(简写:tc
  • mine-full 全部使用我的内容(简写:mf
  • theirs-full 全部使用对方的内容(简写:tf
  • edit 编辑内容(简写:e
  • launch 启动合并(简写:l
  • recommended 使用推荐的操作(简写:r
--relocate : 不推荐;使用 “svn relocate” 代替