CVS是开放源代码的配置管理工具,其源代码和安装文件可以免费下载。CVS是源于Unix的版本控制工具,要安装和使用CVS,最好是对Unix系统有所了解。CVS的服务器管理需要进行各种命令行操作。目前,CVS的客户端有winCVS的图形化界面,服务器端也有CVSNT的版本,易用性正在提高。CVS的功能如下:
它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点中存取最新的代码;它无限制的版本管理检出模式避免了通常因为排他检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样,CVS也不提供对变更流程的自动管理功能。
一般来说,CVS的权限设置单一,通常只能通过CVSROOT/passwd文件、CVSROOT/readers文件和CVSROOT/writers文件,还要设置CVS REPOS的物理目录权限来完成权限设置,而且无法完成复杂的权限控制。但是CVS通过CVS ROOT目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。
它的缺点如下:
由于CVS是开放源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料来解决。
FreeBSD8.1下安装CVS服务器的具体步骤如下:
(1)准备工作(由于这里涉及的权限很多,因此还是以root账号操作)。将ports安装升级等做好。由于在安装CVS的过程中由于要用到Apache的htpasswd,所以预先要安装好apache22,命令如下:
- cd /usr/ports/www/apache22
- make install clean
先安装wget,由于FreeBSD8.1下最小化安装时没有预装此工具,所以我们要用pkg_add来进行安装。其中-r参数是递归的意思,它会安装此软件依赖的其他软件;-v是显示安装过程。pkg_add -r -v wget 下载cvs源码包。wget http://sourceforge.net/projects/ccvs/files VS%20Stable%20Source%20Release/1.11.21/cvs-1.11.21.tar.gz/download?use_mirror=nchc源码编译安装CVS,大家应该对此有所了解,./configure和make及make install是Linux/Unix系统下的软件源码安装三部曲,--prefix=/usr/local/cvs会将我们的CVS软件安装在/usr/local/cvs目录下,如下所示:
- ./configure --prefix=/usr/local/cvs
- make
- make install
(2)设置CVS使用超级服务器进程inetd启动方式。修改inetd的配置文件/etc/inetd.conf,在最后一行添加如下命令:
- cvspserver stream tcpnowait root /usr/bin/cvs
cvs --allow-root=/home/cvsroot pserver
注意 这里root是执行cvs进程的用户,/usr/bin/cvs是CVS可执行文件的存储路径,要保证/usr/bin/里有CVS可执行文件。
cvs --allow-root=/home/cvsroot指定CVS的项目主目录,即用户可访问的项目原文件的一个存放目录,它可以指定多个源代码仓库。检查/etc/services里是否有cvspserver选项,若无的话则需要用一个标识来代替CVS的端口号,即在/etc/services文件中添加如下内容:
- cvspserver 2401
表示用cvspserver来标识2401端口。
(3)添加CVS的管理用户和组。在FreeBSD8.1下我们用adduser命令,按照提示一步步增加cvsroot用户,freebsd默认为此用户创建一个与用户名同名的组cvsroot,其他均可设置成默认值。
(4)初始化CVS源代码仓库。将/home/cvsroot目录的权限改为775,这在第三步已配置,这里检查一下即可,使在cvsroot组的用户对此目录也有读写权限。初始化目录如下:
- cvs -d /home/cvsroot init
- chmod -R 644 /home/cvs/cvsroot/CVSROOT/config
给予config文件相应的权限,不然等会儿又会因权限问题报错。
必须说明的是,在CVS中默认一个用户checkout代码的时候,会在当前模块下生成一个锁文件,如果这个用户对当前模块没有写权限,那么读也是不可能的。配合上面的权限设置,必须改一下CVS服务器的配置,改成不在当前模块目录下生成锁文件,把锁文件集中到一个所有用户都有读写权限的目录中。修改配置文件CVSROOT/config,如下所示:
- # Put CVS lock files in this directory
rather than directly in the repository- #LockDir=/var/lock/cvs
去掉LockDir前的#即可。建立锁文件集中目录,如下所示:
- mkdir -p /var/lock/cvs
给予最高权限,如下所示:
- chmod -R 777 /var/lock/cvs
(5)为CVS添加一个普通用户test。
adduser命令添加test用户,密码自己设定。用pw groupmod将其添加至cvsroot组中。pw groupmod cvsroot -m test配置完成后我们可用命令id test来检查以上配置是否生效。
创建CVS用户密码文件,创建用户admin,密码为admin,因其加密方式与apache的htpasswd相同,c参数用一次即可,添加下一个用户时就不需要此参数了,如下所示:
- htpasswd -cb /home/cvsroot/CVSROOT/passwd admin admin