CVS - Concurrent Versions System(并发版本管理系统)是一个版本控制管理系统,它是目前最为广泛使用的一个系统。从gftp到gtk到KDE,你几乎可以在每一个你熟悉的自由软件的源码里看到它的踪迹(下面我们会知道,它的踪迹指一个称为cvs的子目录)。同样,你也可以在几乎每一个Linux的发行版本里看到CVS系统。可以说,如果失去了CVS,现有的许多多人协作、自由开发的软件都会在一定程度上放慢自己发展的步伐。 CVS到底有哪些功能,使得它有如此强大的魅力呢?
1.CVS能做什么?
如上所说,CVS首先是一个版本管理系统,它可以保留软件开发过程中的每一个版本的信息,包括谁、在何时、作了什么样的修改以及为什么作这样的修改等。这个功能和以前流行于Linux和Unix的版本管理系统RCS(Revision Control System)和SCCS(Source Code Control System)很象。但CVS的功能远非仅此。它的最大的特点是它的并发性,即它支持分布式项目的开发。在互联网席卷一切的今天,这个功能太为重要了。小到一个办公室内部开发一个OA系统,大到KDE小组利用互联网开发新版本的KDE,CVS都可以一展身手。一个程序员开发出了自己负责模块的新版本后,迅速的通过CVS让开发组的每一个成员都分享自己的最新成果。甚至,CVS通过特定的机制允许多个程序员同时修改同一个源程序文件。
另外CVS增强的目录结构以及对二进制文件良好的处理,都使得它远远优于其它的版本管理系统。最后,必须一提的是CVS是基于RCS开发而成的。
2.如何得到CVS?
CVS在几乎包含在所有的Linux发布版本中,如RedHat、Turbo Linux、Slackware以及国产的红旗、Xteam Linux等。你可以试着敲一下cvs命令,大多数情况下都会出现以Usage: cvs开头的一堆信息,提示你如何使用cvs,这意味着在你的机器上早已有了CVS,只是遗憾的是它一直未被你发现和利用。运气不好的话,你会看到形如cvs: Command not found.的提示,这意味着你的机器没有安装CVS。这时你有两种选择。一是找到你的Linux安装盘,从那里安装CVS。例如在使用RPM方式安装的Linux(上面介绍的几个发布版本中似乎除了Slackware,其他都是)发布版本中,找到cvs***.rpm,用rpm命令进行安装。第二种方式是到一些站点cvs的源代码,然后遵循里面附带的指导进行安装,需要的读者请访问站点或者http://www.loria.fr/~molli/cvs-index.html。
3.CVS的基本使用方法
在这一节里,我们来学习掌握CVS的一些基本使用方法。现在我们假定已经安装好了CVS,并且我们打算用它来管理自己正在开发的一个软件,软件名叫netants,它存放在硬盘上一个叫做netants的目录里,目前里面有了文件netants.c、netants.h、http.c、http.h和Makefile。我们并没有和它人协作开发这个软件,也没有利用Internet或者Intranet来开发这个软件。或许,它只是自己的一个业余作品,试图写出一个比Windows下的网络蚂蚁更好的下载工具出来。
3.1初始化CVS
我们首先要使用的命令是cvs init,这个命令用来初始化CVS系统。正如我们所看到的,所有的CVS命令都以cvs开头,然后在后面紧跟命令、参数和一些选项。初始化CVS系统主要是为了创建一个为CVS所使用的源码储存库(repository)。创建的时候,需要指定在那个目录下创建这个源码储存库。有两种方法来指定目录。一是利用\"-d \"选项来指定,例如:-d /usr/local/cvsroot。另一种更方便的方法是在shell里设定一个名叫CVSROOT的环境变量。使用csh或者tcsh的用户可以使用命令setenv来设定,在文件.csh rc或者文件.tcshrc里添加入下的一行: setenv CVSROOT /usr/local/cvsroot 使用sh或者bash的用户需要在文件.profile或者文件.bashrc里添加如下两行: CVSROOT=/usr/local/cvsroot export CVSROOT 设置了环境变量CVSROOT后,我们运行命令cvs init,CVS将在指定的目录下面建立自己所需要的一些文件,以后我们使用CVS管理的任何项目,都会被CVS储存在这个目录之下。不过千万要注意的是:永远不要去试图修改这个目录下的文件。这个目录是由CVS自己进行管理的,轻率的改动可能会导致你丢失你部分或全部的交由CVS管理的源代码或其他资源。
3.2导入项目到CVS中去
初始化结束以后,我们就要真正开始利用CVS来管理自己的程序网络蚂蚁了。第一步,我们将这个项目交由CVS管理。使用如下的CVS的import命令,将源程序导入到CVS的源码储存库中去: cd netants cvs import -m \"start my project: Netants\" netants yoyo start 这个命令看起来有些复杂,需要解释一下。import是cvs的导入命令,默认状况下,它循环的将当前目录下的所有文件(包括子目录)导入到源码库(即CVSROOT指定的目录)里去。-m \"start my project: Netants\"告诉CVS你对这一步操作的说明。这是CVS强制要求的,如果你没有使用这种-m \"字符串\"的选项,CVS将会弹出一个文本编辑器(如果自己不特别指定的话,在Linux下一般是vi,而在Windows下则是Notepad),让你输