一、服务器端的安装与配置
(一)CVS的安装
通常情况下,安装操作系统的时候就安装了CVS.这里首先使用root用户(其他用户下通过sudo)可以通过命令:
debian:~#whereiscvs
cvs:/usr/bin/cvs/usr/X11R6/bin/cvs/usr/bin/X11/cvs/usr/share/man/man1/cvs.1.gz/usr/share/man/man5/cvs.5.gz
这说明我的系统也已经安装了CVS,通常位于/usr/bin下.
如果系统尚未安装CVS的话,可以通过
debian:~#apt-getinstallcvs
对一个不同的发行版有不同的安装方法,最基本的方法就是下载源码包(.tar.gz的包),然后自己一步一步安装。主要就是解压,configure,make,makeinstall这几步。
另外一个要提醒的是,曾有的文章中写到还要安装CVSD。本人Google了一下,得知CVSD是一个CVS的辅助工具,可以是CVS的配置更加方便。不安装他也没关系,所以我们直接配置CVS,而且本生CVS的manual也说了这个安装好的CVS本身就即是服务器也是客户端,主要就是看如何对CVS的配置了。
下面重点介绍CVS服务器段的配置。
(二)CVS服务器端的配置
1.创建cvs组和用户
1)创建cvs组
debian:~#groupaddcvs
2)创建的新用户HOME目录
debian:~#mkdir/home/cvsroot
3)添加新用户cvsroot,并将其添加至cvs组,并指定其HOME目录
debian:~#useradd-gcvs-Gcvs-d/home/cvsrootcvsroot
4)设置cvsroot用户的密码,我这里为:cvsroot
debian:~#passwdcvsroot
EnternewUNIXpassword:
RetypenewUNIXpassword:
passwd:已成功更新密码
5)更改/home/cvsroot/目录及其子目录的属主和属组,因为是在root用户下间的该目录,他的属主和属组都是root,这里我们要将其属主改为cvsroot,属组改为cvs,保证cvs组的用户对该目录有相应的权限。
debian:~#chown-Rcvsroot.cvs/home/cvsroot/
6)更改/home/cvsroot目录属性,保证cvsroot同组(cvs组)的其他用户也有读写和执行权,我们以后要为cvs组添加用户
debian:~#chmod-R775/home/cvsroot/
2.切换至cvsroot用户,并创建一个仓库
1)切换用户
debian~#sucvsroot
2)设置全局变量CVSROOT,指定仓库所在的目录
debian:/root$exportCVSROOT=/home/cvsroot/
3)创建仓库
debian:/root$cvsinit
3.提交源入源代码
1)进入代码所在目录,也就是你想做成CVS控制的源代码目录,我这里是/home/usbprj/,目录下文件有:
debian:/root$cd/home/usrprj/
debian:/home/usbprj$ls
MakefileModule.symverstest.cusb-skeleton.c
装载cvsimport-m"[repositorytest]"[cvstest][vendortag][releasetag]
-m后面引号内填入log内容,接下来是源代码模块名称,接着是装载者,最后是标识符号,我这里是:
debian:/home/usbprj$cvsimport-m"Myproject"usbprjcvsrootstart
Nusbprj/Makefile
Nusbprj/test.c
Nusbprj/Module.symvers
Nusbprj/usb-skeleton.c
Noconflictscreatedbythisimport
此时,我们的源码也提交了,说明module已经建立了。其目录为:/home/cvsroot/usbprj/
2)如果我们在root用户(或者其他用户,但必须保证该用户对于存放module的目录有写的权限)下测试,checkout出这一个module,可以执行如下:
debian:/home/usbprj#cvs-d/home/cvsrootcheckoutusbprj
cvscheckout:Updatingusbprj
Uusbprj/Makefile
Uusbprj/Module.symvers
Uusbprj/test.c
Uusbprj/usb-skeleton.c
说明在本地可以checkout出来,而且他会自动在当前目录下创建以该module名为名的目录项,不管你checkout出来的是一个源码文件还是整个module。我这里checkout出来的module路径为/home/usbprj/usbprj/下。
4.创建登录CVS服务器的用户和密码
1)在/home/cvsroot/CVSROOT/下创建passwd文件,并编辑内容如下:
cvsuser1:*****:cvsroot
cvsuser2:*****:cvsroot
这个文件的意思是有cvsuser1和cvsuser2两个登录cvs服务器的用户,登陆后的权限是cvsroot权限,即第三个字段指定。
注意:这里的新建用户的两个新建登录cvs服务器的用户和系统用户是不同的,这两个用户不能用来登录系统,只能登录cvs服务器。这里我们默认不允许系统用户登录cvs服务器。
2)其中,passwd文件中每行的第二个字段“*****”为用户cvsuser1和cvsuser2密码的加密口令。可以通过下面文件对用户密码加密。
文件名:passwdgen.pl.该文件是perl的脚本。必须保证系统安装了perl才可执行该文件。
内容如下:
#!/usr/bin/perl
srand(time());
my$randletter="(int(rand(26))+(int(rand(1)+.5)%2?65:97))";
my$salt=sprintf("%c%c",eval$randletter,eval$randletter);
my$plaintext=shift;
my$crypttext=crypt($plaintext,$salt);
print"${crypttext}\n";
为该文件添加可执行权限,
debian:~$chmod+xpasswdgen.pl
用户cvsuser1和cvsuser2用户生成加密口令:
debian:~$./passwdgen.plcvsuser1
ZGzWKlE1mv4EY
debian:~$./passwdgen.plcvsuser2
LFfpGaDMC/Cj6
用法:passwdgen.plyourpasswd.其中,yourpasswd即你所需要设定的密码。我这里给我的两个用户的密码和用户名同名,呵呵,为了方便。其中生成的加密口令为13个字符,是由[0-9][A-Z][a-z][.][/]组成。把生成的加密口令替换到passwd文件中相应的“*****”字段即可。
5.设置开机启动CVS服务
我们这里使用xinetd启动,如果系统没有安装xinetd的话,安装之。
1)检查/etc/services中,cvspserver是否开启。cvspserver是远程登录CVS服务器时对用户的验证方式。
debian:~$cat/etc/services|grepcvspserver
#sourceslike
cvspserver2401/tcp#CVSclient/serveroperations
cvspserver2401/udp
这说明我的系统已打开该服务。如果最后两行前面有“#”字符,把他删除就可以了。
2)创建cvspserver文件