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 copy 或 svn 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 会自动创建该目录.