47.5. Subversion 简介

Subversion 是一个开放源代码的版本控制系统,被公认为是 CVS 的后续版本,这意味着上文介绍的 CVS 的功能 subversion 一般都提供。在希望利用 CVS 的优点但又想避开它的缺点时,subversion 是您的首选。这其中的很多功能已经在第 47.1.3 节 “subversion”中有简要介绍。

47.5.1. 安装 Subversion 服务器

在服务器上安装储存库是个相对简单的过程。Subversion 为此提供了一个专用管理工具。创建新储存库需要输入以下命令:

svnadmin create /path/to/repository

使用 svnadmin help 可以列出其它选项。与 CVS 不同的是,subversion 不基于 RCS,而是基于 Berkeley Database。切勿将储存库安装在远程文件系统上,如 NFS、AFS 或 Windows SMB。该数据库需要 POSIX 锁定机制,而这是这些文件系统无法支持的。

命令 svnlook 提供有关现有储存库的信息。

svnlook info /path/to/repository

必须配置服务器,允许不同用户访问该储存库。可以使用支持 WebDAV 的 Apache 万维网服务器进行配置,或使用 svnserve,即用 subversion 封装的服务器。一旦 svnserve 启动并运行,即可使用带 svn://svn+ssh:// 的 URL 访问该储存库。可以在 /etc/svnserve.conf 中设置在调用 svn 时应自我鉴定的用户。

使用 Apache 还是 svnserve 取决于很多因素。建议阅读 subversion 手册。有关详细信息,请参见 第 47.5.3 节 “参考信息”

47.5.2. 用法和操作

使用命令 svn(类似 cvs)可访问 subversion 储存库。使用以下命令之一,从任何客户机都能够访问正确配置的服务器(配有相应的储存库)提供的内容。

svn list http://svn.example.com/path/to/project

svn list svn://svn.example.com/path/to/project

使用命令 svn checkout 可以将现有项目保存到当前目录中(将其签出):

svn checkout http://svn.example.com/path/to/project nameofproject

签出操作将在客户机上创建新的子目录 nameofproject。随后可对其执行各种操作(添加、复制、重命名、删除):

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

这些命令也适用于目录。subversion 还可以记录文件或目录的属性:

svn propset license GPL foo.txt

上例为属性 license 设置了值 GPL。使用 svn proplist 可以显示属性:

svn proplist --verbose foo.txt
 Properties on 'foo.txt':
 license : GPL

使用 svn commit 可以将更改保存到服务器中。其它用户通过使用 svn update 与服务器同步,可以将您的更改并入他或她自己的工作目录。

不同于 CVS,不必使用 svn status 访问储存库即可显示 subversion 中的工作目录的状态。本地更改显示在五列中,最前面一列最为重要:

''

无更改。

'A'

对象被标记为添加。

'D'

对象被标记为删除。

'M'

对象已修改。

'C'

对象发生冲突。

'I'

对象被忽略。

'?'

对象未能由版本控制维护。

'!'

报告对象缺失。在没有使用 svn 命令删除或移动对象时就会出现此标志。

'~'

对象本来作为文件维护,但之后被替换为目录,或者出现相反的情况。

第二列显示属性状态。有关其他所有列的含义,请参见 subversion 手册。

使用命令 svn help 可获得命令参数的说明:

svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
       2. proplist --revprop -r REV [URL]

  1. Lists versioned props in working copy.
  2. Lists unversioned remote props on repos revision.
...

47.5.3. 参考信息

首要参考来源是 subversion 项目的主页:http://subversion.tigris.org/。还有一本很值得参考的手册。在安装 subversion-doc 软件包后,该手册位于 file:///usr/share/doc/packages/subversion/html/book.html 目录下,也可以在 http://svnbook.red-bean.com/svnbook/index.html 中查阅该手册的联机版本。