cvs 是一个开源的版本控制系统。 我们可以用它来记录源文件的修改历史。
例如,修改软件时可能会不知不觉混进一些 bug,而且可能过了很久你才会察觉到它们的存在。有了 cvs,你可以很容易地恢复旧版本,并从中看出到底是哪个修改导致了这个 bug。
如果我们把曾经创建的每个文件都保存下来显然会浪费大量的磁盘空间。cvs的做法是把一个文件的所有版本保存在一个文件里,仅仅保存不同版本之间的差异。
对于开发人员来说,两人之间很容易很容易互相覆盖文件。cvs用隔离不同的开发人员的方式解决了这个问题,每个开发人员在自己的目录工作,等完成之后由cvs合并。
cvs 初由 Dick Grune 在 1986 年 12 月以 shell 脚本的形式发布在 comp.sources.unix 的新闻组第 6 卷里。虽然当前的 cvs 中没什么代码来自于这些 shell 脚本,但许多 cvs 的冲突解决算法是从它们来的。
1989 年 4 月,Brian Berliner 设计了 cvs 并编写了代码。之后 Jeff Polk 帮助 Brian 设计了 cvs 模块和销售商分支支持。
我们可以免费从网上下载到cvs
网址:http://www.cvshome.org/
1、基本安装
以下以UNIX平台为例。
从http://ccvs.cvshome.org/servlets/ProjectDownloadList下载新的cvs安装包到本地后:
%gunzip cvs-1.11.2.tar.gz
%tar xvf cvs-1.11.2.tar
%cd cvs-1.11.2
%./configure (可以用./configure --help看看,根据自己的环境添加相应的参数)
%make
%su - (以正确的用户来安装)
%make install
2、CVS Server端的配置
安装完CVS(假设cvs安装在/usr/local/bin)后:
(1)启动CVS服务
%vi /etc/services
pserver 2402/tcp #cvs pserver port (确认这一行存在。)
%vi /etc/inetd.conf
在文件末尾加入:
pserver stream tcp nowait root /usr/local/bin/cvs cvs --allow-root=/your/path/for/cvs/repsitory pserver
注意这是一行。
然后重新启动inetd进程(一般要root用户权限):
%ps -ef | grep inetd 找出inetd的pid
%su -
%kill -HUP pid
%inetd
(2)建立cvsadm用户和组(使cvsadm用户属于cvsadm组,用于对cvs进行管理)
在cvsadm用户的.cshrc(ksh,sh对应的文件为.profile)文件中设置环境变量$PATH变量中加入/usr/local/bin,并置$CVSROOT为:
:pserver:cvsadm@192.168.4.33:/your/path/for/cvs/repository
其中192.168.4.33为CVS服务器的IP地址。
(3)生成CVS环境
确认/your/path/for/cvs/repsitory目录存在,且cvsadm有可写权限。以cvsadm登录Unix,运行%cvs login ,系统会提示输入密码,登录成功后,执行:%cvs init
(注: 此时可能会提示.cvspass文件不存在,手工touch .cvspass文件后,重新运行cvs login和cvs init 即可)