本文档旨在描述 Subversion 1.6.x 系列。如果您正在运行其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/,并查阅适合您 Subversion 版本的文档。

创建工作副本

大多数情况下,您将通过执行 检出项目来开始使用 Subversion 仓库。从仓库检出一个目录会在您的本地机器上创建一个该目录的工作副本。除非另有说明,此副本包含在 Subversion 仓库中找到的该目录及其子目录的最新版本(即最近创建或修改的版本)。

$ 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.
$

尽管前面的示例检出了 trunk 目录,但您也可以轻松地检出仓库的更深层子目录,方法是将该子目录的 URL 指定为检出 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 使用的是“复制-修改-合并”模型而不是“锁定-修改-解锁”模型(请参阅 名为“版本控制模型”的部分),因此您可以立即对工作副本中的文件和目录进行更改。您的工作副本就像您系统上的任何其他文件和目录集合一样。您可以编辑其中的文件,重命名它,甚至删除整个工作副本并忘记它。

[Warning] 警告

虽然您的工作副本是 就像您系统上的任何其他文件和目录集合一样,您可以随意编辑文件,但您必须将 其他所有操作 告诉 Subversion。例如,如果您想在工作副本中复制或移动项目,您应该使用 svn copysvn move 而不是您的操作系统提供的复制和移动命令。我们将在本章稍后详细讨论它们。

除非您已准备好提交新增文件或目录或对现有文件或目录的更改,否则无需进一步通知 Subversion 服务器您已执行任何操作。

请注意,在前面的示例对中,Subversion 选择在以检出 URL 的最后一个组件命名的目录中创建工作副本。这仅在检出 URL 是提供给 svn checkout 命令的唯一信息时才作为对用户的便利。但是,Subversion 的命令行客户端为您提供了额外的灵活性,允许您选择指定 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 会为您创建它。