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

高速教程

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

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

[Note] 注意

本附录中使用的示例假设您已在类 Unix 操作系统上准备好了 svn(Subversion 命令行客户端)和 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
         …

Subversion 并不真正需要 branchestagstrunk 子目录。它们仅仅是一个流行的约定,你很可能在以后会用到它们。

准备好数据树后,使用 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 章,服务器配置,了解可用的不同类型的服务器进程以及如何配置它们。

TortoiseSVN 官方中文版 1.14.7 发布