打不死的心态活到老。

CVS在Redhat 下的配置

上一篇 / 下一篇  2007-11-17 00:29:19 / 个人分类:linux

CVSRedhat下的配置

\8`9Pa0L,|0

 部分内容参考网上资料。51Testing软件测试网5R/AM&UXI'`$M

.服务器的安装略过不提,因为安装了开发工具的话默认就已经有了CVS。如果忘记安装,可以在LinuxXWindows界面通过添加删除程序来安装。

m!r#xVB U s2VP4{8T Y0

检查CVS是否已安装:51Testing软件测试网V4F+ctU#k

rpm –qa|grep cvs51Testing软件测试网'hA5E cm2f

如果显示类似如下输出则显示已安装

tRZ"|%uVO]l0

cvs -1.11.1p1-351Testing软件测试网K!?;l/T KC

1.首先创建用于CVS的组和用户:51Testing软件测试网*u@q9O yp f y

代码:51Testing软件测试网 b)JrH1}8r&EPa @ \
#groupadd cvs
;\([H;^:gH(M0#useradd cvsroot -g cvs
8nZUZ N.T0#passwd cvsroot
51Testing软件测试网|4{'O^z q%Nh-j|_

OK,用户已经建立好了,cvsroot就是我们做CVS操作使用的。51Testing软件测试网K6`&V!pP[nZ

2.修改配置文件51Testing软件测试网%fN+Sh({ FP

代码:
:G p n {1F-S0Hg0#more /etc/services | grep cvspserver

Ha9e1M\L#g1hs"kY0

看看是否有(这里是查看/etc/services文件中是否已经配置cvs

;b9Y_3Q7V&c0

代码:51Testing软件测试网 v-r \|nc#e8zb
cvspserver 2401/tcp #CVS client/server operations
:^ BJZ8q6j0cvspserver 2401/udp #CVS client/server operations

F+z4Oy$zR5p2Qp3C0

2行。系统自带了CVS时,这2行也已经有了,只需要确认一下。如果没有,请自己加上去(如上显示的2句)。
O4cVIF2@2F-{0
然后必须创建启动脚本:51Testing软件测试网k%caM"LU.]:R

代码:
.Y+R VJ#f||Fk j*B0#vi /etc/xinet.d/cvspserver

5s"M g*eca*YWS0

内容如下51Testing软件测试网"U!rIp^T]m0I1^9c"_

代码:
"c'w+k*Y)\i#H0service cvspserver
P@2f{ Y%{ B3J5l f}0{
Jw1u(l[!{0disable = no
9C0rM BDJj0flags = REUSE51Testing软件测试网6O/N)L5\&A.v
socket_type = stream
D:xO m Cw0wait = no51Testing软件测试网 Zg*uy6@ h|F*a
user = root
*['U"h5]-FWW,kp cwG0server = /usr/bin/cvs51Testing软件测试网v^iEMV
server_args = -f --allow-root=/home/cvsroot pserver51Testing软件测试网Tis9{7D-S#dR H
log_on_success += USERID51Testing软件测试网@ ~q u#_'e
log_on_failure += USERID51Testing软件测试网Wnj#_fj
}

.t` VAYhYn0

其中server指定CVS可执行文件路径,默认安装就是/usr/bin/cvsserver_args指定源代码库路径及认证方式等,例子中把源代码存放在cvsroot的主目录中,也可以另外指定路径,但必须注意权限设置,pserver是密码认证方式,这种方式的安全性要差一些,但操作起来比较简单。请注意每行等号左右都有一个空格,否则无法启动服务。

Q5uO#h%`fd0

3.初始化CVS51Testing软件测试网;RO_Zu
切换到cvsroot用户,然后进行初始化:51Testing软件测试网%C1C+Ud6~}7u

代码:
B!M'W6A{6b6a Vf0#cvs -d /home/cvsroot init
51Testing软件测试网6}_U0?`Uj8ga

这个路径应该与cvspserver文件中指定的路径相同,初始化后会在此路径下面创建CVSROOT目录,存放用于CVS管理的一些文件。此时重新启动xinetd服务,CVS服务器应该能够启动了。51Testing软件测试网A(WZ_WF

代码:
VU9C!X(P8T/}0#service xinetd restart
51Testing软件测试网$Y t'hT)r

当然,重新启动计算机也可以。确认是否启动:51Testing软件测试网-zFgoI'F

代码:51Testing软件测试网m+w(Vh4c7J TtC
#netstat -l | grep cvspserver
51Testing软件测试网C1T~Y-|

如果能看到51Testing软件测试网 r"e/C)T]wt%Jz ~

代码:51Testing软件测试网%_x5vf R5F&i:N
tcp 0 0 *:cvspserver *:* LISTEN

BF'o#G6fg`0

说明已经正常启动,没有的话请重新检查配置过程是否有错误或者遗漏。最后还必须检查防火墙的设置,把2401端口打开。

?Ex!a l7Se&m#Ok0

4.用户管理51Testing软件测试网HZt JXjV;i
CVS
默认使用系统用户登录,为了系统安全性的考虑也可以使用独立的用户管理。CVS用户名和密码保存在CVSROOT目录下的passwd文件中,格式为:51Testing软件测试网0}[ jt+{m T+o{

代码:
!^/neFy} ~d0
用户名:密码:系统用户51Testing软件测试网Ynek8cc]-BPFZ

也就是说,它把CVS用户映射到系统用户,这样我们就可以通过系统用户的权限设置来分配给用户不同的权限,而不需要让用户知道系统用户名和密码。51Testing软件测试网7r`PRh'\L:p
passwd
文件默认并不存在,我们必须自己创建。文件中的密码字段使用MD5加密,不幸的是CVS没有提供添加用户名的命令,所以我们借用Apache的命令来完成这项工作

GMx o Q'lMFjC)rK6V(i0

代码:51Testing软件测试网[F['l&q8jPm
#htpasswd passwd username
51Testing软件测试网#tMrqMv vw)S&wy

这个命令为username指定密码,并保存在passwd中,文件不存在时会自动创建。htpasswd命令不是为CVS而设,因此总有一些遗憾,它不能自动添加映射到的用户名,不过没关系,我们设置好密码后,自己把这部分加上。我的做法是映射到cvsroot用户,如果需要映射其他的用户,请注意给相应的目录设置好权限,否则CVS用户可能无法访问源代码仓库。
\i#T_;L@0
要彻底防止使用系统帐号登陆,可以编辑CVSROOT目录下的config文件,把51Testing软件测试网$XeiE0gl'XH9Lj-x

代码:51Testing软件测试网{[[X({e
#SystemAuth=no

9p k8z!mWtLccWG0

这一行前面的#去掉,CVS就不会验证系统用户了,否则当用户名不在passwd文件中时,CVS会进行系统用户的验证。
8`IXPX%v8\_0
此外还必须配置读写权限,使用CVSROOT目录下的readerswriters文件进行这个工作。这2个文件默认也是没有的,没关系,自己创建就可以了。readers文件记录拥有只读权限的用户名,每行一个用户;writers文件记录拥有读写权限的用户名,也是每行一个用户。注意,readers文件比writers优先,也就是说出现在readers中的用户将会是只读的,不管writers文件中是否存在该用户。

V)G9CA,X(M0

配置完毕,先测试一下:51Testing软件测试网Em6N1Q,SU6m-v+}3V

代码:51Testing软件测试网;{Pa X]6At
#cvs -d :pserver:username@127.0.0.1:/home/cvsroot login

hx4b)M3[)R^ k0

这里假设用户名是username,本机登陆。出现密码提示,输入正确的密码后,登陆成功。如果提示访问被拒绝,请检查用户权限、目录权限以及防火墙设置。建议设置环境变量CVSROOT51Testing软件测试网*z,{&p&O w

代码:
9Z*h F%dL]V:F0#export CVSROOT=:pserver:username@127.0.0.1:/home/cvsroot

Xf G.\*l0

以后就不需要输入-d参数了,但-d参数会覆盖这个环境变量的设置。51Testing软件测试网2a/D+i-Z*QL ?*PK

5.源代码仓库的备份和移动51Testing软件测试网`XR@.ab.y fF+T5e
基本上,CVS的源代码仓库没有什么特别之处,完全可以用文件备份的方式进行备份。需要注意的只是,应该确认备份的过程中没有用户提交修改,具体的做法可以是停止CVS服务器或者使用锁等等。恢复时只需要把这些文件按原来的目录结构存放好,因为CVS的每一个模块都是单独的一个目录,与其他模块和目录没有任何瓜葛,相当方便。甚至只需要在仓库中删除一个目录或者文件,便可以删除该模块的一些内容,不过并不建议这么做,使用CVS的删除功能将会有一个历史记录,而对仓库的直接删除不留任何痕迹,这对项目管理是不利的。移动仓库与备份相似,只需要把该模块的目录移动到新的路径,便可以使用了。
I*i#B#HD0
如果不幸在备份之后有过一些修改并且执行了提交,当服务器出现问题需要恢复源代码仓库时,开发者提交新的修改就会出现版本不一致的错误。此时只需要把CVS相关的目录和文件删除,即可把新的修改提交。

e#N(G{Gae0

6.更进一步的管理
D5LVbM&?9F7S0CVSROOT
目录下还有很多其他功能,其中最重要的就是modules文件。这个文件定义了源代码库的模块,下面是一个例子:51Testing软件测试网#H#I aMz"y

代码:51Testing软件测试网1?7d7C,Ybro@
Linux Linux51Testing软件测试网0h-Q3^2vRa&W T9i
Kernel Linux/kernel

9E5uA{R A%Y,u0

这个文件的内容按行排列,每一行定义一个模块,首先是模块名,然后是模块路径,这是相对于CVS根目录的路径。它定义了两个模块,第一个是Linux模块,它位于Linux目录中,第二个是Kernel模块,这是Linux模块的子模块。51Testing软件测试网'\O(A6RN2]%sa
modules
文件并非必须的,它的作用相当于一个索引,部分CVS客户端软件通过它可以快速找到相应的模块,比如WinCVS

)nT I6p+kPi5r0

7.协同开发的问题
,l$v ZhJY'c0
默认方式下,CVS允许多个用户编辑同一个文件,这对一个协作良好的团队来说不会有什么问题,因为多个开发者同时修改同一个文件的同一部分是不正常的,这在项目管理中就应该避免,出现这种情况说明项目组内部没有统一意见。而多个开发者修改文件的不同部分,CVS可以很好的管理。
n9b8q%y_B.F/k'Sp0
如果觉得这种方式难以控制,CVS也提供了解决办法,可以使用cvs admin -l进行锁定,这样一个开发者正在做修改时CVS就不会允许其他用户checkout。这里顺便说明一下文件格式的问题,对于文本格式,CVS可以进行历史记录比较、版本合并等工作,而二进制文件不支持这个操作,比如word文档、图片等就应该以二进制方式提交。对于二进制方式,由于无法进行合并,在无法保证只有一个用户修改文件的情况下,建议使用加锁方式进行修改。必须注意的是,修改完毕记得解锁。51Testing软件测试网.E\*@Wy3n|
1.6版本开始,CVS引入了监视的概念,这个功能可以让用户随时了解当前谁在修改文件,并且CVS可以自动发送邮件给每一个监视的用户告知最新的更新。51Testing软件测试网:Bgu&S xi

8.建立多个源代码仓库51Testing软件测试网u;a\bX
如果需要管理多个开发组,而这些开发组之间不能互相访问,可以有2个办法:51Testing软件测试网)l N `k0~-GD/gQ
a
.共用一个端口,需要修改cvspserver文件,给server_args指定多个源代码路径,即多个—allow-root参数。由于xinetdserver_args长度有限制,可以在cvspserver文件中把服务器的设置重定向到另外一个文件,如:

?)S1R!TM7lvY2a0

代码:51Testing软件测试网 ^pK.A)A@2}
server = /home/cvsroot/cvs.run
51Testing软件测试网Uu ?I7GFT

然后创建/home/cvsroot/cvs.run文件,该文件必须可执行,内容格式为:

U4M2{EL)Q0W0

代码:
)?SX+R9q*y{0#!/bin/bash
I&i J0s/N0Oo0i0/usr/bin/cvs -f51Testing软件测试网E-QJY#nq inl'z
--allow-root=/home/cvsroot/src151Testing软件测试网$k:Ex6q WB C7iM
--allow-root=/home/cvsroot/src2
y}a7X[0pserver
51Testing软件测试网;{iA]9S"a3}x$O&x

#>chmod +x /cvsroot/cvs.run(这个一定要输)

ng\"m*N0

注意此时源代码仓库不再是/home/cvsroot,进行初始化的时候要分别对这两个仓库路径进行初始化,而不再对/home/cvsroot

TAG: linux

 

评分:0

我来说两句

Open Toolbar