【永恒的瞬间】
☜Give me hapy ☞

CVS 介绍

CVS 代表协作版本系统,这是一个将一组文件放在层次目录树中以保持同步的系统。人们可以从 CVS 服务器上更新他们的本地层次树副本,并将修改的结果或新文件发回;或者删除旧文件。
CVS
基于客户端 / 服务器的行为使得其可容纳多用户,构成网络也很方便。这一特性使得 CVS 成为位于不同地点的人同时处理数据文件 ( 特别是程序的源代码 ) 时的首选。

 

服务器

1 。初始化 cvs 服务器环境

cvs –d /tmp/source init

命令在 /usr/local/sourc 下建立了 cvsroot 目录,里面是初始化的 cvs 服务器配置文件。

2 。把 cvs 服务器放到 xinetd

vi /etc/xinetd.d/cvspserver 建立服务文件并添加内容

server cvspserver

{

         flags          = REUSE

         socket_type       = stream

         wait                     = no

         user                    = root

         protocol             = tcp

         server                 = /usr/bin/cvs

         server_args       = -f –allow-root=/tmp/source pserver

         disable               = no

}

其中 server_args 一个参数指定了源代码路径 , 一个指定了服务器使用密码认证方式 .

然后确保 /etc/services 文件中有以下两行

cvspserver 2401/tcp
cvspserver 2401/udp

最后重启 xinetd 服务。

 

测试

假设 cvs 服务器在 192.168.0.192 上,系统上有一个用户 cvs 。登陆另一台 linux 机器,执行下列命令可以完成测试。

$export CVSROOT :pserver:cvs@192.168.0.192:2401/tmp/source

$cvs login

输入密码,没有错误提示表示登陆成功。

$cvs logout 登出

 

用户认证

cvs 服务器有一套自己的用户认证机制,此方法使用了系统上用户直接作为 cvs 服务器用户,采用 linux 组、用户权限实现这样的功能。

例如,在 linux 系统上有两个开发组 a b ,分别有用户 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 。使用一个不同路径

2 /etc/xinetd.d 目录下建立一个新的任务配置文件,如 cvspserver1 ,文件中第一行 server 名称一定要区分。如改为 server cvspserver1 server_args 做相应变动。还要在 /etc/services 文件中,加入新的服务器端口,如 cvspserver1 2402/tcp 。重启 xinetd 即可。

 

CVS 的使用流程

1 。登入 (login) ,只需做一次。需要密码认证,除非是允许匿名登入,否则都要输入 CVS Server 管理者配给您的密码。

2 。取出 (checkout) 整份专案 ( 类似档案下载 ) 。此时,您的硬碟中会有一份专案的原始码目录,我们称之为工作目录。

3 。依您的程式意图,修改某一支程式。

4 。查询程式的在库状态 (status) (3 4 这二个动作可互调或合并操作 )

5 。视在库状态,比对二者的差异 (diff) ,调整修改的程式 ( 是否和他人修改的部份发生冲突,若无冲突,那就十分单纯,可在修改完之後,直接存入 (commit/ci) 档案库 (repository) )

6 。若有冲突,在 mailling list 中,和他人讨论,取得协调。

7 。将修改好的档案 commit 存入 CVS 档案柜 ( 俗称 checkin ,类似档案上传 ) ,请务必在程式码注解中,详述您的意图。

8 。透过 mailling list 说明您的想法,和大家讨论。

9 。每经过一段时日,应查询在库状态,并更新您的工作目录 (update)

posted on 2007-03-08 08:33 ☜♥☞MengChuChen 阅读(378) 评论(0)  编辑  收藏 所属分类: VSS

只有注册用户登录后才能发表评论。


网站导航: