现在的位置: 首页 > 综合 > 正文

cvs管理篇

2013年06月10日 ⁄ 综合 ⁄ 共 2910字 ⁄ 字号 评论关闭
 

一 cvs的基本配置
建立一个源代码库主要有以下几步:
1.1 初始化cvs服务器环境。
一开始要求确认有cvs的存在,whereis cvs, 若无,请安装,再进行下一步。
#cvs -d/usr/local/source init
    之后进入/usr/local/source,可以看到有一个目录CVSROOT, 下面是初始化后的CVS服务器配置文件。暂且保持不动。
 
1.2 把cvs服务放到xinetd系统服务中。
    首先在/etc/xinetd.d目录下生成任务配置文件cvspserver,文件名称可以随便用。
其中内容大致如下:
service cvspserver
    { 
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root 
        protocol        = tcp
        server          = /usr/bin/cvs
        server_args     = -f --allow-root=/usr/local/source pserver
        disable         = no
}
server_args一个参数指定了源代码库路径,一个指定了服务器使用密码认证方式。
    第二,要确认/etc/services文件中,有cvspserver关键词,并分配了端口,如:cvspserver 2401/tcp
    第三,重新启动xinetd服务,cvs服务就可以用了。
 
1.3 测试
假定cvs服务器在192.168.0.205上,系统上有一个用户cvs。登陆另一台linxu
机器,执行下列命令可以完成测试:
    $export CVSROOT=:pserver:cvs@192.168.0.205:2401/usr/local/source
    $cvs login
    输入密码,没有出错提示表示登陆成功。
 
1.4 日常使用
1)在.bashrc中加入环境变量:
export  CVSROOT=:pserver:user@host/cvspath
2)登陆
#cvs login
 
3)导入档案(项目)
使用cvs import命令将自己的档案导入CVS:
进入源代码目录:
cvs import -m "comment" 档案名 厂商或作者 版本号(可以随便选个,没什么影响)比如有个test项目:
cd test
cvs import -m "注释" test user v_0_0_1

若要建立多仓库CVS,只需在server_args多加一个选项即可,例:
server_args = -f --allow-root=/var/source --allow-root=/var/resource pserver
由于xinetd有长度限制,可以使用如下方法:
注释或删掉server_args行,将server行修改如下所示:
server = /etc/cvs.run (文件位置任选)
在所指定的目录下建立cvs.run文件,该文件要有执行权限:
#!/bin/bash
/usr/bin/cvs -f /
--allow-root=/var/source1a /
--allow-root=/var/source2 /
.............
chmod +x cvs.run

 
二 cvs权限设置
2.1管理文件概述
在$CVSROOT/CVSROOT目录下有许多文件 ,这里简单介绍一下:
config 配置文件,可以配置系统认证方式以用lockdir等
modules 模块文件
commitinfo 在进行cvs commit的时候会检查这个文件,如果里面有什么脚本的话会先执行这里面的脚本,通过这个文件会实现的功能数不胜数,好好用了。相似的还有loginfo,taginfo
passwd,writers,readers,前面说了。
2.2 cvs自己的用户认证
CVS自己的权限设置有限,只有三个基本文件:
passwd
writers
readers
passwd是为了建立CVS自己的用户认证系统。格式为:
登录用户:加密的密码:系统中对应的用户
writers中的用户可进行写操作。
readers中的用户只可进行读操作。
2.3系统用户管理机制
    cvs作为并行版本控制系统,多用户读写是需要的。但有时候希望有些用户只能check out,不能提交新代码。有时希望cvs上的某些用户不能check out一些代码,例如和另一个开发组共用一个CVS,希望另一个组的成员不能check out自己组代码。
 
    cvs服务器有一套自己的用户认证机制,我使用时候没采用,而是使用了系统上用户直接作为cvs服务器用户,采用linux组、用户权限实现了这样的功能。
 
    举例说明,在linxu系统上模拟实际两个开发组ab,分别有用户a-user1,a-user2,b-user1,b-user2
 
    模块a-source,希望a组成员都可以读写,b组成员没有任何权限。可以使用以下系列命令:
    #chown -R a-user1 a-source
    #chgrp -R a a-source
   #chmod -R 770 a-source
 
    如果希望模块a-source,只有a-user1可以写,同组其它用户可以读,b组成员没有任何权限,把chmod命令改成-R 750就行了。
 
    必须说明的,cvs中默认一个用户checkout代码时候,会在当前模块下生成一个锁文件,如果这个用户对当前模块没有写权限,读是不可能的。配合上面的权限设置,必须改一下cvs服务器配置。改成不在当前模块目录下生成锁文件,把锁文件集中到一个所有用户都有读写权限的目录。修改配置文件CVSROOT/config
    # Put CVS lock files in this directory rather than directly in the repository.
    #LockDir=/var/lock/cvs
LockDir设上就可以了。
 
 
备注:
1)重要系统命令:
chown –R [user]:[group] [dir]    //改变文件夹的拥有者属性
chmod –R ??? [dir]                         //改变文件夹的权限
 
2)常用CVS命令
Export CVSROOT=:pserver:[user]@[host]:/path //设置CVSROOT环境变量
Cvs login
Cvs checkout [module]              取模块,第一次时
Cvs update           更新
Cvs commit          提交模块
Cvs status   查询模块状态
通常登陆后,推荐操作序列为:cvs –qn update , cvs diff , cvs commit
 
说明:cvs只是一种多人共享版本开发的工具,具体的开发工作还得在项目组里形成一定规范,绝对不能依赖CVS,只有良好的编码风格,经常备份的意识,才能在未可见风险时有定的抵抗风险能力。
 
 

 

抱歉!评论已关闭.