本手册旨在介绍 Subversion 1.1。如果您正在运行较新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的版本。

快速入门

有些人难以通过阅读本书提供的“自上而下”的方式来理解一项新技术。本节是对 Subversion 的简短介绍,旨在为“自下而上”学习者提供机会。如果您是喜欢通过实验学习的人之一,以下演示将帮助您快速入门。在此过程中,我们将提供本书相关章节的链接。

如果您不熟悉版本控制的概念或 CVS 和 Subversion 使用的“复制-修改-合并”模型,那么您应该在继续之前阅读 第 2 章,基本概念

注意

以下示例假设您已准备就绪 svn,Subversion 命令行客户端,以及 svnadmin,管理工具。它还假设您的 svn 客户端已针对 Berkeley DB 编译。要验证这一点,请运行 svn --version 并确保ra_local模块可用。没有此模块,客户端无法访问file://URL。

Subversion 将所有版本控制的数据存储在中央存储库中。首先,创建一个新的存储库

$ svnadmin create /path/to/repos
$ ls /path/to/repos
conf/  dav/  db/  format  hooks/  locks/  README.txt

此命令创建一个新的目录/path/to/repos其中包含 Subversion 存储库。确保此目录位于本地磁盘上,而不是网络共享。此新目录主要包含 Berkeley DB 数据库文件集合。如果您查看内部,您将看不到版本控制的文件。有关存储库创建和维护的更多信息,请参阅 第 5 章,存储库管理

接下来,创建一个文件和目录树,导入到存储库中。出于稍后将变得清晰的原因(参见 第 4 章,分支和合并),您的结构应包含三个名为branches, tags,以及trunk:

/tmp/project/branches/
/tmp/project/tags/
/tmp/project/trunk/
               foo.c
               bar.c
               Makefile
               …

的顶级目录。准备好数据树后,使用 svn import 命令将数据导入到存储库中(参见 名为“svn import”的部分

$ svn import /tmp/project file:///path/to/repos -m "initial import"
Adding         /tmp/project/branches
Adding         /tmp/project/tags
Adding         /tmp/project/trunk
Adding         /tmp/project/trunk/foo.c
Adding         /tmp/project/trunk/bar.c
Adding         /tmp/project/trunk/Makefile
…
Committed revision 1.
$ 

现在存储库包含此数据树。请注意,原始/tmp/project目录保持不变;Subversion 不知道它。(实际上,您甚至可以删除该目录。)为了开始操作存储库数据,您需要创建一个新的“工作副本”数据,这是一种私人的工作区。要求 Subversion “签出”存储库的trunk目录

$ svn checkout file:///path/to/repos/trunk project
A  project/foo.c
A  project/bar.c
A  project/Makefile
…
Checked out revision 1.

的工作副本现在您拥有存储库一部分的个人副本,位于名为project

运行 svn update 使您的工作副本“更新”到存储库。

有关您可以对工作副本进行的所有操作的完整指南,请阅读 第 3 章,导览