本手册旨在描述 Apache™ Subversion® 的 1.7.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 会为您创建它。