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.

创建工作副本

大多数时候, 用户开始使用仓库是通过执行 检出 (checkout) 命令. 检出仓库中的目录将会在用户的 本地主机上创建一个该目录的工作副本. 除非特意指定, 否则这个副本将包 含仓库最新版本的数据:

$ svn checkout http://svn.example.com/svn/repo/trunk
A    trunk/README
A    trunk/INSTALL
A    trunk/src/main.c
A    trunk/src/header.h
…
Checked out revision 8810.
$

上面的例子检出的是主干目录, 但用户也可以轻易地检出更深层的子目录, 只需要在检出命令的参数中写上子目录对应的 URL 即可:

$ svn checkout http://svn.example.com/svn/repo/trunk/src
A    src/main.c
A    src/header.h
A    src/lib/helpers.c
…
Checked out revision 8810.
$

因为 Subversion 用的是 复制-修改-合并 模型, 而非 加锁-修改-解锁 (见 “版本控制模型”一节), 所以用户马上就可以修改 工作副本里的文件与目录. 工作副本就像一个普通目录, 用户可以编辑或 重命名里面的文件, 甚至可以删除整个工作副本.

[警告] 警告

虽然工作副本 像一个普通目录, 用户可以按照自己 的意愿编辑里面的文件, 但是其他事情必须告诉给 Subversion. 例如, 如果 用户想要复制或移动工作副本中的某个文件或目录, 必须使用 svn copysvn move, 而不是 操作系统提供的复制与移动命令. 关于它们的更多内容会在后面讲到.

除非用户准备提交修改, 否则不需要通知 Subversion 服务器你做了哪些 修改.

在上面的两个例子中, Subversion 在本地创建的目录名是检出命令中 URL 参数的最后一个分量. 如果用户只向 svn checkout 提供了 URL 参数, 那么根据最后一个分量来创建目录对用户来说就比较方便. 不过 Subversion 客户端命令行工具也允许用户自己指定一个目录名, 例如:

$ svn checkout http://svn.example.com/svn/repo/trunk my-working-copy
A    my-working-copy/README
A    my-working-copy/INSTALL
A    my-working-copy/src/main.c
A    my-working-copy/src/header.h
…
Checked out revision 8810.
$

如果用户指定的本地目录不存在, svn checkout 会自动创建该目录.