由于临时有个小项目,向公司申请CVS立项是件很麻烦的事情,所以只有自动动手搞一个CVS服务器了,网上找了很多资料,发现资料非常混乱,有2/3是UNIX系统的,有1/3是windows的,但大多是cvsnt2.04的,不知道别人怎么弄的,自己耗费了许多时间总也不成功,发现新的版本已经是2.5.03的了,命令都改了,还学什么.只好自己一点点的弄了,关键是实现权限控制,麻雀虽小,五脏俱全.
环境搭配:
Cvsnt : 2.5.03,下载地址:http://www.cvsnt.org
Wincvs : 1.3b中文版,下载: www.8848software.com/wincvs
操作系统 : windows XP
实现过程参考前面一篇转的blog
1.admin文件
这个文件记录cvs服务器的管理员,把账户名写进去然后在checkoutlist文件中加入admin文件名(需先checkout checkoutlist文件,修改后再提交才能生效,不能在服务器改)
所谓管理员,就是能给别人分权限
2.congfig文件
这个文件记录是否采用系统验证,同样需先checkout,修改后再commit才能生效
3.muldes文件
这个文件记录当前仓库有的项目/模块,不写发现也可以
4.group文件
这个文件记录用户的分组,涉及到权限分配,建议把所有的用户分组,不然cvs默认用户拥有所有权限.
5.wincvs1.3中的cvs.exe太老不支持chacl命令,所以我从cvsnt中考了cvs.exe,覆盖下就OK了
6.权限控制
为用户分配权限,首先使用cvs管理员登陆,然后checkout到本地cvs目录,注意不可以在服务器上的cvs仓库使用命令
cvs chacl -a [no]read|write|tag|control|all -u user cvs在新的版本中命令已经变了
如取消用户权限: cvs chacl -a noread -u hy(要取消的用户名或者用户组名) 不要使用网上说的 cvs chacl default:n
增加权限控制: cvs chacl -a nowrite -u hy(要取消的用户名或者用户组名)
在命令提示符下要能使用首先要配置CVSROOT的环境变量,具体配置网上搜索.
我总结出来的权限管理思路:
(1)首先把所用账号都分成不同的组,然后用组来管理权限.
(2)每新增一个模块,在本地的cvs目录上调用一下 cvs chacl -anoread -u 用户组,再为这个项目组员单独分配权限.这样权限就控制到了工程目录级别,
(3)设置某个组员在项目下某个目录不可以写,如不让项目组中的新手改WEB-INF下的配置文件,可以在命令提示符下访问WEB-INF目录 调用:cvs chacl -a nowrite-u hy whai(可以有多个用户)
(4)删除用户的权限设置 cvs chacl -d -u hy
(5)列出项目下的权限控制 cvs lsacl
(6)更改项目所有者 cvs chown hy