主要参考文章:
CVS服务器设置指南。
1.首先创建用于CVS的组和用户groupadd cvs
useradd cvsroot -g cvs
2.配置文件/etc/services
line 5801,5802:
cvspserver 2401/tcp # cvspserver
cvspserver 2401/udp # cvspserver
/etc/xinetd.d/cvs
server_args:
service cvspserver
{
# disable = yes
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvsroot pserver
}
其中server指定CVS可执行文件路径,默认安装就是/usr/bin/cvs。server_args指定源代码库路径(/cvsroot)及认证方式(pserver)。据说每行等号左右都有一个空格,否则无法启动服务。
3.初始化cvscvs -d /cvsroot init
chown cvsroot:cvs /cvsroot
这个路径应该与/etc/xinetd.d/cvs文件中指定的路径相同,初始化后会在此路径下面创建CVSROOT目录,存放用于cvs管理的一些文件。此时重新启动xinetd服务,cvs服务器应该能够启动了。
service xinetd restart
确认是否启动:
netstat -l | grep cvspserver
如果能看到:
tcp 0 0 *:cvspserver *:* LISTEN
说明已经正常启动,没有的话请重新检查配置过程是否有错误或者遗漏。最后还必须检查防火墙的设置,把2401端口打开。
/etc/sysconfig/SuSEfirewall2
line 252:
FW_SERVICES_EXT_TCP="2401"
4.cvs用户管理cvs默认使用系统用户登录,为了系统安全性的考虑也可以使用独立的用户管理。cvs用户名和密码保存在CVSROOT目录下的passwd文件中,格式为:
cvs用户名:密码:系统用户
也就是说,它把cvs用户映射到系统用户,这样我们就可以通过系统用户的权限设置来分配给用户不同的权限,而不需要让用户知道系统用户名和密码。passwd文件默认并不存在,我们必须自己创建。文件中的密码字段使用MD5加密,不幸的是cvs没有提供添加用户名的命令,所以我们借用apache 2的命令来完成这项工作:
htpasswd2 passwd username
这个命令为username指定密码,并保存在passwd中,文件不存在时请加参数“-c”来自动创建:
htpasswd2 -c passwd username
文件passwd的内容形式如下所示:
username:IM0iJXymHfG2k
把cvs用户名username映射到系统用户名cvsroot后,文件passwd内容形式如下所示:
username:IM0iJXymHfG2k:cvsroot
如果需要映射其他的用户,请注意给相应的目录(/cvsroot)设置好权限,否则cvs用户可能无法访问源代码仓库。
要彻底防止使用系统帐号登陆,可以编辑/cvsroot/CVSROOT目录下的config文件,把(第二行):
#SystemAuth=no
更改为:
SystemAuth=no
此外还必须配置cvs用户的读写权限,使用/cvsroot/CVSROOT目录下的readers和writers文件进行这个工作。这2个文件默认也是没有的,需自行创建。readers文件记录拥有只读权限的用户名,每行一个用户;writers文件记录拥有读写权限的用户名,也是每行一个用户。readers文件比writers优先,也就是说出现在readers中的用户将会是只读的,不管writers文件中是否存在该用户。配置完毕,先测试一下:
cvs -d :pserver:username@127.0.0.1:2401/cvsroot login
这里假设用户名是username,本机登陆。出现密码提示,输入正确的密码后,登陆成功。如果提示访问被拒绝,请检查用户权限、目录权限以及防火墙设置。一般建议设置环境变量CVSROOT:
export CVSROOT=:pserver:username@127.0.0.1:2401/cvsroot
以后就不需要输入-d参数了,但-d参数会覆盖这个环境变量的设置。
5.使用示例导入一个已有的项目到cvs服务器(name_of_project是项目的名称,name_of_project_dir为项目的本地目录):
cd name_of_project_dir
cvs -d :pserver:username@127.0.0.1:2401/cvsroot import -m "Test of cvs." name_of_project vendor_tag release_tag