本文档尚在编写中,内容可能随时更改,可能无法准确描述 Apache™ Subversion® 软件的任何已发布版本。将此页面添加为书签或以其他方式将其推荐给他人可能不是一个明智的做法。请访问 https://svnbook.subversion.org.cn/ 获取本书的稳定版本。

高速教程

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

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

[Note] 注意

本附录中使用的示例假设您已准备好 svn(Subversion 命令行客户端)和 svnadmin(管理工具)在类 Unix 操作系统上运行。(此教程也适用于 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 章,服务器配置 了解可用的不同类型的服务器进程以及如何配置它们。

TortoiseSVN 官方中文版 1.14.7 发布