Subversion 是一个开放源代码的版本控制系统,被公认为是 CVS 的后续版本,这意味着上文介绍的 CVS 的功能 subversion 一般都提供。在希望利用 CVS 的优点但又想避开它的缺点时,subversion 是您的首选。这其中的很多功能已经在第 47.1.3 节 “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 节 “参考信息”。
使用命令 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 中的工作目录的状态。本地更改显示在五列中,最前面一列最为重要:
无更改。
对象被标记为添加。
对象被标记为删除。
对象已修改。
对象发生冲突。
对象被忽略。
对象未能由版本控制维护。
报告对象缺失。在没有使用 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.
...
首要参考来源是 subversion 项目的主页:http://subversion.tigris.org/。还有一本很值得参考的手册。在安装 subversion-doc 软件包后,该手册位于 file:///usr/share/doc/packages/subversion/html/book.html 目录下,也可以在 http://svnbook.red-bean.com/svnbook/index.html 中查阅该手册的联机版本。