三、客户端测试
1、连接CVS服务器
刚才建立的CVS服务器端的IP为:10.15.5.89
客户端主机使用非root用户,我的用户名为test
首先建立环境变量CVSROOT,以刚才建立的CVS用户cvsuser登录:
[test@liu ~]$ export CVSROOT=:pserver:cvsuser@10.15.5.89:/home/cvsroot [test@liu ~]$ cvs login Logging in to :pserver:cvsuser@10.15.5.89:2401/home/cvsroot CVS password: [test@liu ~]$ |
如果没有错误提示,则代表成功登录CVS服务器。
---------------------------------------
在此却很有可能出现:unrecognized auth response from 10.15.5.89: cvs pserver: cannot open /home/cvsroot/CVSROOT/config: Permission denied
尤其是当你的linux版本较高时。
这是由于selinux的原因,这是一种安全机制,具体可以上网查。
只要关闭selinux就可以了:
编辑/etc/selinux/config,
将SELINUX设置为SELINUX=disabled,禁用SELINUX。
重启电脑就好了
---------------------------------------
2、检出模块
我们上面已经建立了一个仓库了: myProject
我们在客户端将该模块checkout
[test@liu ~]$ cvs checkout myProject cvs checkout: Updating myProject U myProject/helloworld.cpp U myProject/makefile [test@liu ~]$ |
好了,在当前目录下生成了目录myProject,现在你就可以进入myProject进行修改,删除,提交等操作了。
四、现在我们来说说多仓库的建立
注意,我们用cvsroot仅仅是用来管理,所以,不要在它$HOME下面创建任何仓库
另外,cvsroot用户的初始环境不应该包含非空的$CVSROOT.(也就是必须设置环境变量) 使用cvsroot来进行的任何管理工作都指明CVSROOT是一个好的习惯.
OK,开始给单个项目建仓库
假设有两个项目,project1,project2,希望单独存放,便于管理
1、分别给两个工程建立各自的cvs主目录
#mkdir /home/cvsroot/pro1 #mkdir /home/cvsroot/pro2 |
2、 分别更改pro1和pro2目录及其子目录的属主和属组
#chown cvsroot.cvs /home/cvsroot/pro1 #chown cvsroot.cvs /home/cvsroot/pro2 |
3、更改目录pro1和pro2的权限
#chmod 2775 /home/cvsroot/pro1 #chmod 2775 /home/cvsroot/pro2 |
(更高的安全要求则$chmod 2770 /home/cvsroot/pro1)
4、OK,开始建立仓库
#su cvsroot |
$cvs -d /home/cvsroot/pro1 init $cvs -d /home/cvsroot/pro2 init |
$chmod 2775 /home/cvsroot/pro1 $chmod 2775 /home/cvsroot/pro2 |
5、修改启动文件
#vi /etc/xinetd.d/cvspserver |
内容如下:
service cvspserver |
然后更改/etc/xinetd.d/cvs, 否则的话,在后面的远程登录本机时会出现下面的问题
“没有该仓库”
[test@liu ~]$ cvs -d :pserver:cvsuser@10.15.5.89:/home/cvsroot/pro1 login Logging in to :pserver:cvsuser@10.15.5.89:2401/home/cvsroot/pro1 CVS password: /home/cvsroot/pro1: no such repository [test@liu ~]$ |
更改方法如下:
把disable=yes 改为 disable=no ;env和server_args中路径改为你的cvsroot路径,我的是/home/cvsroot
更改后的内容如下
# default: off # description: The CVS service can record the history of your source \ # files. CVS stores all the versions of a file in a single \ # file in a clever way that only stores the differences \ # between versions. service cvspserver { disable = no port = 2401 socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs env = HOME=/home/cvsroot server_args = -f –allow-root=/home/cvsroot/pro1 --allow-root=/home/cvsroot/pro2 pserver # bind = 127.0.0.1 } |
6、重启xinetd服务,使配置生效
重启xinetd
# /etc/init.d/xinetd restart 停止 xinetd: [确定] 启动 xinetd: [确定] |
7、建立更多的仓库的技巧
由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做
1)修改cvspserver和cvs文件
#vi /etc/xinetd.d/cvspserver #vi /etc/xinetd.d/cvs |
修改它们的内容中如下:
service cvspserver |
2)然后写脚本/home/cvsroot/cvs.run
#vi /home/cvsroot/cvs.run |
脚本内容如下:
#!/bin/bash /usr/bin/cvs -f \ |
3)更改cvs.run的权限:
#chmod +x /home/cvsroot/cvs.run |
4)重启服务:
#service xinetd restart |