2. 快速指南

请确定你坐在了正确的位置,你的盘桌已经关闭,乘务员们,准备起飞 …。

这是一个快速教程,能够帮助你熟悉 Subversion 的基本配置和操作。在结束这个教程时,你应该对 Subversion 的典型用法有了一个基本认识。

[注意] 注意

The examples used in this appendix assume that you have svn, the Subversion command-line client, and svnadmin, the administrative tool, ready to go on a Unix-like operating system. (This tutorial also works at the Windows command-line prompt, assuming you make some obvious tweaks.) We also assume you are using Subversion 1.2 or later (run svn --version to check).

Subversion 的所有版本化数据都储存在中心版本库中。因此我们需要先创建一个版本库:

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

This command creates a Subversion repository in the directory /var/svn/repos, creating the repos directory itself if it doesn't already exist. This directory contains (among other things) a collection of database files. You won't see your versioned files if you peek inside. For more information about repository creation and maintenance, see 第 5 章 版本库管理.

在 Subversion 中没有项目的概念。Subversion 的版本库只是一个虚拟的版本化文件系统,可以存放你想要存放的任何文件。有些管理员喜欢为每个项目建立一个独立的版本库,而另外一些管理员则喜欢将多个项目存放到同一个版本库的不同目录里。这两种方式各有各的优点,关于这方面内容的论述,参见第 2.1 节 “规划你的版本库结构”。不论是哪种方式,版本库都只是负责管理文件和目录,而项目则是人为指定的概念。因此,尽管本书中遍布着项目这个词,但是请记住我们只不过是在谈论版本库中的某些特定目录(或者是一组目录)。

在这个例子中,我们假定已经有一些需要导入到 Subversion 版本库的条目(一组文件和目录)。接下来,我们需要把这些条目整理到一个名为 myproject 的目录(或者其它任意目录)里。在这个目录下,创建三个顶级子目录:branches, tagstrunk。将所有需版本化的数据保存到 trunk 目录下,同时保持 branchestags 目录为空:


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

branches, tagstrunk 这三个子目录不是 Subversion 必须的。但这样做是 Subversion 的习惯用法,我们还是遵守这个约定吧。

准备好了数据之后,就可以使用svn import命令(参见第 2 节 “导入数据到你的版本库”)将其导入到版本库中:

$ 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 章 基本使用

现在,你可以选择将 Subversion 版本库发布到网络上。参见第 6 章 服务配置,以了解不同服务器软件的使用以及配置方法。