(本文在redhat 7.3/8.0/9.0上测试通过)
安装cvs的rpm包后,服务器和客户端就都安装了,首先配置服务器端:
1.查看是否安装cvs
rpm -qa | grep cvs
一般安装在/usr/bin/cvs,如果未安装,到www.cvshome.org下载一个最新的rpm安装即可
2.建立cvs用户组,便于管理cvs用户
groupadd cvs
3.建立cvsroot用户,属于cvs组(组名必须为cvs),根目录为/home/cvsroot,不许登陆
useradd -g cvs -s /sbin/nologin cvsroot
4.改变/home/cvsroot的目录属性
chmod 775 /home/cvsroot
5.初始化cvs源代码库,此操作生成目录/home/cvsroot/CVSROOT,其下为一些初始化文件
cvs -d /home/cvsroot init
6.创建可以登陆cvs服务的用户及密码,需要创建文件passwd
vi /home/cvsroot/CVSROOT/passwd
文件内容如下:
weiqiong:xxxxxx:cvsroot
chenxu:xxxxxx:cvsroot
此文件的意思是weiqiong和chenxu两个用户可以登陆cvs服务器,登陆后其权限为用户cvsroot的权限
注意:cvs用户和服务器用户是可以不一样的
7.xxxxxx为密码,由以下文件生成:
vi /home/cvsroot/passwdgen.pl
文件内容:
#!/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}
";
8.如果需要密码为:123456,则敲入:
passwdgen.pl "123456"
回车即可得到加密密码,用其替换passwd文件中的xxxxxx
9.加入cvs服务(一般的redhat上缺省就有cvs服务,所以不用加)
vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service
10.一般cvs服务由inted来唤起,因此需要改动inetd提供的服务,如果你的redhat使用的是inetd方式,
则在文件/etc/inetd.conf中加入如下的内容:
cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot
pserver
redhat7.3以上使用的是xinetd方式,所以在xinetd.d目录下添加需要启动的服务:
cd /etc/xinetd.d
vi cvspserver
文件内容:
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_failure += USERID
}
11.重新启动inetd或者xinetd:
/etc/rc.d/init.d/xinetd restart
12.检查cvspserver服务是否已经启动
netstat -l |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* LISTEN
---------------------------------------------
以上是服务器端配置,下面是客户端使用。为简便,本例中就在本机上使用,但下列步骤适用于任何cvs客户机。
1.设置系统环境变量(设cvs服务器IP为192.168.0.2,本例中为本机IP)
设置CVSROOT环境变量:
修改~/.bash_profile,加入一行
export CVSROOT=:pserver:weiqiong@192.168.0.2:/home/cvsroot
然后运行命令 . ~/.bash_profile。
2.使用:
cvs login
敲入命令回车后提示输入weiqiong的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了。
3.导入旧的工程:
假定工程在/root/old/proj1/目录中,则
cd /root/old/proj1
cvs import -m "new project proj1" proj1 vendortag
releasetag
回车,系统会提示工程建立完毕。
4.从cvs服务器上导出cvs工程:
假定要将工程放在/root/new/目录下,则
cd /root/new
cvs co proj1
回车,系统会提示工程顺利导出,出现目录/root/new/proj1,里面的文件就是你要修改的文件。
5.提交文件:
修改/root/new/proj1/a.c后,需要提交修改
cd /root/new/proj1
cvs ci -m "comments here" a.c
回车,系统会提示文件顺利提交。
6.取回新版本文件:
如果自己的/root/new/proj1/a.c取回后,没有修改,但是服务器端的a.c被他人修改了,则需要更新本地拷贝
cd /root/new/proj1
cvs update a.c
回车,系统会提示文件顺利更新。
7.查看文件当前状态:
cd /root/new/proj1
cvs status a.c
回车,系统会显示文件的当前状态。
8.比较文件的新旧版本变化:
如果要比较1.2版和1.3版的区别:
cd /root/new/proj1
cvs diff -r1.2 -r1.3 a.c
回车,系统会显示文件的区别。
如果要比较1.2版和当前版本的区别:
cd /root/new/proj1
cvs diff -r1.2 a.c
回车,系统会显示文件的区别。
9.查看文件被修改的记录:
cd /root/new/proj1
cvs log a.c
回车,系统会显示所有提交过程中-m选项所提交的文字。
10.注意:
cvs服务器上的用户(本文中是cvsroot用户)必须是cvs组的才能用,如果还是报repository找不到,在客户端用户的home目录下touch文件.cvspass,文件是空的,但是当你login一次服务器后自动就有内容了。