本手册旨在介绍 Subversion 1.6.x 系列版本。如果您使用的是 Subversion 的其他版本,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的手册。

高速教程

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

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

[Note] 注意

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

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

$ cd /var/svn
$ svnadmin create repos
$ ls repos
conf/  dav/  db/  format  hooks/  locks/  README.txt
$

此命令将在目录 /var/svn/repos 中创建一个 Subversion 存储库,如果 repos 目录尚不存在,则会创建该目录本身。此目录包含(除其他事项外)一个数据库文件集合。如果您查看内部,您将看不到您的版本化文件。有关存储库创建和维护的更多信息,请参见 第 5 章,存储库管理

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

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


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

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

准备好您的数据树后,使用 svn import 命令将其导入存储库(参见 名为“将数据导入存储库”的部分

$ svn import /tmp/myproject file:///var/svn/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:///var/svn/repos/myproject/trunk myproject
A    myproject/foo.c
A    myproject/bar.c
A    myproject/Makefile
…
Checked out revision 1.
$

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

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

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