CVS Manual
一、安装cvs
1. linux环境
#cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 4) |
2. 管理员登录
以管理员root账号登录
3. 检查是否已装有cvs
#rpm -qa | grep cvs
如果返回cvs-1.11.**,就说明已安装了cvs。
4. 卸载已安装的cvs
#rpm -e cvs-1.11.**
5. 安装cvs
下载cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz到/root/目录。
#cd /root
#tar zxvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz
#cd cvs-1.11.22-cvsacl-1.2.5-patched
#./configure --prefix=/usr
#make
#make install
6. 配置/etc/services
#vi /etc/services
确认有如下2行
cvspserver 2401/tcp # cvs client/server operations cvspserver 2401/udp # cvs client/server operations |
7. 配置xinetd服务
#vi /etc/xinetd.d/cvspserver
内容如下
service cvspserver { disable = no socket_type = stream wait = no user = root server = /etc/xinetd.d/cvs.run log_type = FILE /var/log/cvslog } |
#vi /etc/xinetd.d/cvs.run
内容如下
#!/bin/bash /usr/bin/cvs -f --allow-root=/db5/p1 pserver |
#chmod a+x /etc/xinetd.d/cvs.run
8. 重启xinetd服务
#/etc/init.d/xinetd restart
9. 检查cvspserver服务是否已经启动
#netstat -l |grep cvspserver
应该有如下结果
tcp 0 0 *:cvspserver *:* LISTEN |
10. 创建cvsadmin账户
#groupadd cvsadmin
组名必须是“cvsadmin”。
#useradd -g cvsadmin -s /bin/false -M cvsadmin
11. 字符集
#vi .bashrc
增加
export LANG="zh_CN.GB2312" |
二、初始建库
1. 管理员登录
以管理员root账号登录
2. 创建配置管理员的系统账户
#useradd wang
#passwd wang
#vi /etc/group
内容如下
cvsadmin:x:500:wang |
3. 创建CVSServerRunAsUser账户
#groupadd ce
#useradd -g ce -s /bin/false -M ce
4. 创建CVSROOT目录管理账户
#groupadd cm
#useradd -g cm -s /bin/false -M cm
#vi /etc/group
内容如下
cm:x:509:ce,wang |
5. 创建项目库
#mkdir -p /db5/p1
#chmod g+w /db5/p1
#cvs -d /db5/p1 init
#cd /db5/p1/CVSROOT
#touch passwd group
#chmod -R g+s /db5/p1
#chmod g+w passwd group access
#cd
#chown -R ce:ce /db5/p1
#chown -R cm:cm /db5/p1/CVSROOT/
6. 检查远程登录cvs服务器
#cvs -d :pserver:[email protected]:/db5/p1 login
没有出现错误提示表示成功。
7. 建立CVSROOT链接
#mkdir -p /cvsroot/p1
#ln -s /db5/p1/CVSROOT/ /cvsroot/p1/
8. 建立批量删除用户脚本
#vi bin/w.sh
内容如下
#!/bin/sh export LC_ALL=zh_CN.GB18030 n0=`expr index $1 "@"` if [ $n0 = 0 ] then echo "***账号格式不对,请输入完整的mail地址***" exit fi n1=$1 n2=`echo ${n1##*@}` if [ "$n2" = "***.cn" ] then n3=`echo ${n1%%@*}` else n3=`echo ${n1/@/.}` fi echo ...cvs... find /cvsroot/ -name passwd -follow -exec grep -i $n3 {} ; -print -exec sed -i.bak "s/^$n3:/#$n3:/I" {} ; #ssh $LOGNAME@scm3.***.cn "find /cvsroot/ -name passwd -follow -exec grep -i $1 {} ; -print -exec sed -i.bak "s/^$1:/#$1:/I" {} ;" /bin/echo "$n1" | /usr/bin/mutt -s "logoff-user" scm-dept@scm5.***.cn |
三、日常管理
1. 管理员登录
以管理员wang账号登录
2. 检查是否装有apache,下面步骤的htpasswd命令要安装apache后才有
$whereis htpasswd
3. 创建cvs用户的账号
使用linux系统帐号登录cvs不安全,而CVS提供了独立于系统的用户帐号管理,使用配置文件 CVSROOT/passwd来管理帐号。
$cd /db5/p1/CVSROOT
$htpasswd -b passwd wang 123456
$htpasswd -b passwd user1 123456
$htpasswd -b passwd user2 123456
$htpasswd -b passwd user3 123456
$htpasswd -b passwd user4 123456
4. 创建cvs用户组
将权限相同的用户划分到一组,就是角色的意思,这样可以方便维护。
$vi group
内容如下
admin:wang,user group2:user1,user2 group3:user3,user4 |
组中的用户,要在passwd文件中存在。
5. 指定acl管理员账号
$cd
$cvs -d /db5/p1 racl admin:p -r ALL ALL
$cvs -d /db5/p1 racl admin:p -r ALL CVSROOT
6. 配置aclconfig
$cvs -d /db5/p1 co .
$cd CVSROOT/
$vi aclconfig
内容如下
UseCVSACL=yes CVSACLDefaultPermissions=r UseSystemGroups=no UseCVSGroups=yes CVSServerRunAsUser=ce |
$cvs ci
7. 配置config
$vi config
内容如下
SystemAuth=no LockDir=/var/lock/cvs/p1 |
$mkdir /var/lock/cvs/p1
$chmod a+w /var/lock/cvs/p1
$cvs ci
8. 配置tag规则
#vi tagcheck.sh
内容如下
#! /bin/sh # TAG add/mov/del repo files... # $1 $2 $3 $4 ... case "$1" in p1-*_*_*) ;; *) exit 0 # not reserved, ok. ;; esac case "$CVS_USER" in wang | user ) exit 0 # ok ;; *) echo "$ CVS_USER does not have permission to perform this tag operation!" 1>&2 exit 1 ;; esac |
#cvs ci
#vi taginfo
增加如下内容
ALL $CVSROOT/CVSROOT/tagcheck.sh |
#vi checkoutlist
内容如下
tagcheck.sh |
#cvs ci
#chmod a+x /db5/p1/CVSROOT/tagcheck.sh*
9. 检查acl管理员用户登录
$cd
$cvs -d :pserver:[email protected]:/db5/p1 login
没有出现错误提示表示成功。
10. 增加cvs用户
$cd /db5/p1/CVSROOT/
$htpasswd -b passwd jian 123456
11. 修改cvs用户的密码
$htpasswd -b passwd jian 654321
12. 删除cvs用户
$vi passwd
用“#”注释用户,内容如下
wang:WvkxyZJnB/aPg sun:UVI1jZ0ZAlP1c user1:FrGMR8cAdoxTc user2:1WePnhauRrQXU #jian:xm6P2FwJ40OCY |
用户名最大长度是255字节,并且不能包含“:”。
13. 批量删除cvs用户
$sh w.sh user1
14. 修改cvs用户组
$vi group
内容按需求修改即可。
15. 增加模块
$cd
$rm -fr CVS*
$cvs -d :pserver:[email protected]:/db5/p1 co .
$mkdir module1 module2
$cvs add module1 module2
$touch module1/temp.txt
$touch module2/temp.txt
$cvs addd module1/temp.txt module2/temp.txt
16. 设置模块的权限
只有acl管理员才能设置权限。
$cvs -d /db5/p1 racl admin:p -r ALL module1
$cvs -d /db5/p1 racl admin:p -r ALL module2
$cvs -d /db5/p1 racl group2:a -r ALL module1
$cvs -d /db5/p1 racl group3:r -r ALL module1
$cvs -d /db5/p1 racl group3:a -r ALL module2
$cvs -d /db5/p1 racl group2:r -r ALL module2
四、更换配置管理员
1. 管理员登录
以管理员root账号登录
2. 创建配置管理员的系统账户
#groupadd sun
#useradd -g sun -s /bin/bash sun
#passwd sun
#vi /etc/group
内容如下
cvsadmin:x:500:wang,sun |
3. 设置配置管理员的系统账户
#vi /etc/group
内容如下
cm:x:509:ce,wang,sun |
4. 创建cvs用户的账号
#cd /db5/p1/CVSROOT
#htpasswd -b passwd wang 123456
5. 修改cvs用户组
#vi group
内容如下
admin:sun |
6. 检查acl管理员用户登录
#su - sun
$cvs -d :pserver:[email protected]:/db5/p1 login
没有出现错误提示表示成功。
7. 检查acl管理员账号是否有效
$cvs -d /db5/p1 racl admin:p -r ALL ALL
没有出现错误提示表示成功。
#!/bin/sh cd /bin2/failover/ echo . echo "***开始建/var/lock/cvs/...***" SAVEIFS=$IFS IFS=" " file1=/etc/xinetd.d/cvs.run if [ -f $file1 ] then file2=`grep "allow-root" $file1` for f in $file2 do h=`echo ${f##*/db1/}` h=`echo ${h##*/db2/}` h=`echo ${h##*/db3/}` h=`echo ${h##*/db4/}` h=`echo ${h##*/db5/}` h=`echo ${h##*/db6/}` h=`echo ${h##*/db01/}` h=`echo ${h##*/repository/}` i=`echo ${h%%' '*}` mkdir -p /var/lock/cvs/$i chmod a+w /var/lock/cvs/$i done fi IFS=$SAVEIFS |