建立和配置操作都是在 面,版本信息为:Concurre 这个cvs可执行程序既可以 | Redhat Linux8.0上做的。系统 nt Versions System (CVS) 1.1 当客户端使用,也可以用来建立 | 带的CVS可执行程序在/usr/bin下 1.2 (client/server)。系统带的 cvs源代码库服务器。 |
建立一个源代码库主要有以下几步: |
(1)初始化cvs服务器环境。 |
#cvs -d/usr/local/source init |
之后进入/usr/local/s 器配置文件。暂且保持不动 | ource,可以看到有一个目录CVS 。 | ROOT, 下面是初始化后的CVS服务 |
(2)把cvs服务放到xinetd系统服务中。 |
首先在/etc/xinetd.d | 目录下生成任务配置文件cvspse | rver,文件名称可以随便用。 |
其中内容大致如下: |
service cvspserver |
{ |
flags = REUSE |
socket_type = stream |
wait = no |
user = root |
protocol = tcp |
server = /usr/bin/cvs |
server_args = -f --a | llow-root=/usr/local/source pserver |
disable = no |
} |
其中server_args一个参数指定了源 | 代码库路径,一个指定了服务器使用密码认证方式。 |
第二,要确认/etc/ser cvspserver 2401/tcp。 | vices文件中,有cvspserver关 | 键词,并分配了端口,如: |
第三,重新启动xinetd服务,cvs服务就可以用了。 |
(3)测试。假定cvs服务器在192.16 linxu机器,执行下列命令可以完成测试 | 8.0.205上,系统上有一个用户cvs。登陆另一台 : |
$export CVSROOT=:pse | rver:cvs@192.168.0.205:2401/ | usr/local/source |
$cvs login |
输入密码,没有出错提示表示登陆成功。 |
如果想在一个linux系 。 | 统上建多个源代码库,分别提供 | cvs服务。重复上面步骤就可以了 |
第一步时候要注意使用一个不同路径。 |
第二步放到xinetd系统 置文件,例如cvspserver1 cvspserver1,server_args ,例如:cvspserver1 2402 | 服务中稍微麻烦点。/etc/xinet ,文件中service名称一定要区 做相应变动。还要在/etc/servi /tcp。重新启动xinetd服务. | d.d目录下要生成一个新的任务配 分第一个,例如service ces文件中,加入新的服务端口号 |
第三步测试时候,可以这样设定: |
$export CVSROOT=:pserver:cvs@192 | .168.0.205:2402/usr/local/source1 |
cvs作为并行版本控制系统,多用户 out,不能提交新代码。有时希望cvs上的 发组共用一个CVS,希望另一个组的成员 | 读写是需要的。但有时候希望有些用户只能check 某些用户不能check out一些代码,例如和另一个开 不能check out自己组代码。 |
cvs服务器有一套自己 作为cvs服务器用户,采用l | 的用户认证机制,我使用时候没 inux组、用户权限实现了这样的 | 采用,而是使用了系统上用户直接 功能。 |
举例说明,在linxu系 1,a-user2,b-user1,b-user | 统上模拟实际两个开发组a、b, 2。 | 分别有用户a-user |
模块a-source,希望a组成员都可以 令: | 读写,b组成员没有任何权限。可以使用以下系列命 |
#chown -R a-user1 a-source |
#chgrp -R a a-source |
#chmod -R 770 a-source |
如果希望模块a-source 限,把chmod命令改成-R 75 | ,只有a-user1可以写,同组其它 0就行了。 | 用户可以读,b组成员没有任何权 |
必须说明的,cvs中默 如果这个用户对当前模块没 服务器配置。改成不在当前 限的目录。修改配置文件CV | 认一个用户checkout代码时候, 有写权限,读是不可能的。配合 模块目录下生成锁文件,把锁文 SROOT/config: | 会在当前模块下生成一个锁文件, 上面的权限设置,必须改一下cvs 件集中到一个所有用户都有读写权 |
# Put CVS lock files in this dir | ectory rather than directly in the repository. |
#LockDir=/var/lock/cvs |
把LockDir设上就可以了。 |