This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

名称

svn update (up) — 更新工作副本.

大纲

svn update [PATH...]

描述

svn update 把仓库里的更新应用到工作副本里. 如果没有指定版本号, 则默认是 HEAD, 否则的话, svn update 把工作副本更新到由选项 --revision (-r) 所指定的版本号. 作为更新操作的一部分, svn update 还会删除工作副本 中已过时的锁 (见 “有时候你需要的只是清理一下”一节).

对每一个被更新的项目, Subversion 都会打印一行信息, 信息的开头是 一个字符, 用于表示对项目所采取的动作, 这些字符有:

A

新增

B

被破坏的锁 (只出现在第 3 列)

D

被删除

U

被更新

C

发生冲突

G

被合并

E

已存在

出现在第一列的状态字符描述的是文件内容的更新, 出现在第二列的 状态字符描述的是文件属性的更新, 出现在第三列的状态字符则描述的是 关于锁的信息.

和大多数子命令一样, 你可以通过选项 --depth, 把更新操作的作用范围限制在一定的范围内. 同样地, 还可以用选项 --set-depth 为目标路径设置新的 粘着 深度.

选项

示例

把仓库中最新的内容更新到本地:

$ svn update
Updating '.':
A    newdir/toggle.c
A    newdir/disclose.c
A    newdir/launch.c
D    newdir/README
Updated to revision 32.

还可以把工作副本 更新 一个更旧的版本 (与 CVS 相比, Subversion 没有 粘着 文件的概念, 见 附录 B, 针对 CVS 用户的 Subversion 介绍):

$ svn update -r30
Updating '.':
A    newdir/README
D    newdir/toggle.c
D    newdir/disclose.c
D    newdir/launch.c
U    foo.c
Updated to revision 30.
[提示] 提示

如果你只是想看看某个文件在老版本时的内容, 更方便的做法是使用 命令 svn cat—它不会修改工作副本.

svn update 还是配置稀疏工作副本的主要命令. 如果指定了选项 --set-depth, 命令将会把工作副本路径 的周围深度修改成用户指定的深度, 从而忽略或延伸工作副本路径 (必要时 将从仓库中抓取数据). 关于稀疏目录的更多信息, 见 “稀疏目录”一节.

用户可以只调用一次 svn update 就能更新多个 目录, Subversion 不仅会忽略不被版本控制的目标, 如果是 Subversion 1.7, 它还会在最后打印一段总结信息:

$ cd my-projects
$ svn update *
Updating 'calc':
U    button.c
U    integer.c
Updated to revision 394.
Skipped 'tempfile.tmp'
Updating 'paint':
A    palettes.c
U    brushes.c
Updated to revision 60.
Updating 'ziptastic':
At revision 43.
Summary of updates:
  Updated 'calc' to r394.
  Updated 'paint' to r60.
  Updated 'ziptastic' to r43.
Summary of conflicts:
  Skipped paths: 1
$