本文档旨在描述 Subversion 1.4。如果您正在运行较新的 Subversion 版本,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的书籍版本。

高速教程

请确保您的座椅靠背处于完全直立位置,您的托盘桌已收起。空乘人员,准备起飞……。

以下是快速教程,将引导您完成一些基本的 Subversion 配置和操作。完成本教程后,您应该对 Subversion 的典型用法有基本了解。

注意

本附录中使用的示例假设您已准备好 svn(Subversion 命令行客户端)和 svnadmin(管理工具)在类 Unix 操作系统上使用。(本教程也可以在 Windows 命令提示符下使用,假设您进行一些明显的调整。)我们还假设您使用的是 Subversion 1.2 或更高版本(运行 svn --version 检查)。

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

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

此命令创建一个新的目录 /path/to/repos,其中包含一个 Subversion 仓库。这个新目录包含(除其他外)一组数据库文件。如果您查看内部,您不会看到您的版本控制文件。有关仓库创建和维护的更多信息,请参阅 第 5 章,仓库管理

Subversion 没有“项目”的概念。仓库只是一个虚拟的版本控制文件系统,一个可以保存任何您想要内容的大树。一些管理员喜欢在一个仓库中只存储一个项目,而另一些管理员喜欢通过将项目放到单独的目录中,在一个仓库中存储多个项目。每种方法的优缺点在 名为“规划您的仓库组织”的部分 中进行了讨论。无论哪种方式,仓库只管理文件和目录,因此由人类来解释特定的目录作为“项目”。因此,虽然您可能会在本手册中看到对项目的引用,但请记住,我们始终只在讨论仓库中的某个目录(或目录集合)。

在本例中,我们假设您已经拥有某种项目(一组文件和目录),您希望将其导入到新创建的 Subversion 仓库中。首先,将您的数据整理到名为 myproject(或您想要的任何名称)的单个目录中。出于稍后将变得清晰的原因(请参阅 第 4 章,分支和合并),您的项目的树结构应包含三个名为 branchestagstrunk 的顶级目录。 trunk 目录应包含所有数据,而 branchestags 目录为空

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

branchestagstrunk 子目录实际上并非 Subversion 要求的。它们仅仅是一个流行的约定,您很可能以后会用到它们。

准备好数据树后,使用 svn import 命令将其导入到仓库中(请参阅 名为“将数据导入您的仓库”的部分

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

现在仓库包含此数据树。如前所述,您不会通过直接查看仓库来看到您的文件;它们都存储在数据库中。但仓库的假想文件系统现在包含一个名为 myproject 的顶级目录,该目录又包含您的数据。

请注意,原始 /tmp/myproject 目录保持不变;Subversion 对其一无所知。(事实上,您甚至可以删除该目录,如果您愿意。)为了开始操作仓库数据,您需要创建一个新的“工作副本”,这是一种私人工作区。要求 Subversion “检出”仓库中 myproject/trunk 目录的工作副本

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

现在,您拥有仓库一部分的个人副本,位于名为 myproject 的新目录中。您可以编辑工作副本中的文件,然后将这些更改提交回仓库。

有关使用工作副本可以执行的所有操作的完整教程,请阅读 第 2 章,基本用法

此时,您可以选择通过网络让其他人访问您的仓库。请参阅 第 6 章,服务器配置 了解可用的不同类型的服务器进程以及如何配置它们。