查看: 4913|回复: 0
打印 上一主题 下一主题

LINUX作CVS服务器之二

[复制链接]
跳转到指定楼层
1#
发表于 2008-9-14 16:24:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
软件库的备份与移动

备份软件库中的文件和备份其他文件并没有不同,但你需要一个备份工具开锁住CVS.这样,你必须先注册一个可以读取软件库的用户,打开CVS软件库,你需要编辑`#cvs.rfl’文件.

当你想用一备份的软库,恢复原来的库时,如果原库在你备份后作过改动.CVS将报错.你必须按以下的步骤来

?得到一个新的工作目录

?拷贝上一次提交失败的文件(,当然不能拷贝CVS的目录文件)

?在新目录下工作,使用cvsupdate或cvsdiff等命令指出那些作过改动,在使用cvscommit将改动保存到软件库.

你如果想移动一个软件库到其他地方也很简单.最简单的方法是将向要移动的目录创到一个新的目录中去.如果你想重新使用原来的目录的话,只能手工修改`CVS/Repository'和`CVS/Root',除非你精于此道,否则不建议使用.

4.2CVS的远程用户管理

作为一个CVS服务器,应该满足两点.首先保证软件库有足够大的空间.其次保证有不小于32M的内存,服务器为每一个连接它的用户产生两个进程,在子进程上的花销较小.但如果网络带宽不够,在父进程上的花销是巨大的.

另外一个大的花销是diff文件,当源文件很大时,对他进行验证或检测的花销也很大.

远程用户的登录认证方式

以rsh为例行远程登录

Cvs服务器使用rsh允许用户连接时应该配置.rshosts,假设在远程主机tom.exsample.com上的用户tom需要连接到funame.simple.com这个cvs服务器上工作.应该编辑服务器端的bach目录的.rshosts,在其中加入

Tom.exsample.comtom

客户端可运行rsh–lbachfuname.simple.com‘echo@PATH

以确定自己可以连接到CVS服务器上,并且客户应将显示的这个路径写入.bashrc或cshrc(而不是.logiin或.profile.)

除此之外,客户端还可以定义环境变量CVS_SEVER.来定义主机的位置.在服务器端,修改/etc/ineted.conf文件,来告诉服务器,在获得特定端口的连接时,运行cvssever.这个端口号缺省值是:2041.当然为了不再每次使用时都要进行设置,可以在用户端通过定义环境变量CVS_AUTH_PORT来使用.

如客户端的ineted允许使用原始调用,只需在/etc/ineted.conf文件中添加下面的句子即可2401streamtcpnowaitroot/usr/local/bin/cvscvs–f–allow–root=/cvsrootpserver

另外还可以用-T选项来定义缓冲目录.

—allow–root定义了可供用户使用的软件库,如果服务器上有更多的软件库需要重新使用这个句子.另外,内部用户可以这样定义环境变量CVSROOT

:pseve:usr@funam.simple.com:/cvsroot

其中usr是用户名(linux系统的)funam.simple.com是cvs服务器,并假设/cvsroot是软件库的目录名.远程用户可用下面的形式:

:etx:psever:usr@funam.silple.com:/cvsroot

:etx:定义了是远程用户,其余同上.

如果客户的ineted采用一般调用,只需在/etc/seveice中加入下面这一句:

cvspsever2401/tcp

重新启动ineted使其读取初始化文件即可.

CVS对于用户的管理.在缺省状态下(如用telnet登陆),是和linux系统使用同样的用户名与密码.即:只要你登陆linux系统,就拥有$CVSROOT的只读权限..当然,对某一软件的开发者来说必须拥有相对应目录的读写权限,才能完成源代码的升级等工作.因此,CVS也提供了自己的用户认证体系以更加方便的管理用户.

在服务器端的$CVSROOT/CVSROOT下可以有一个passwd文件(可以用环境变量CVS_PASSFILE来定义.)来记录cvs的用户信息.他采用的是和linuxetc/passwd同样的组织形式.同样,它的passwold也是经过linux标准加密方式的.下面是一个passwd的内容

anyone:

tom:xyzkue

mary:yuio:pubcvs

第一行的意思是,当用anyone的身份登录时,不需要任何密码.即使打入空串也可以.当然在这种方式下你得到的可能只是只读权.第二行的意思是,tom登录时需要敲入passwold.该passworld加密后是xyzkue.以这种方式登录后.一般可以获得较高的权限.

第三行的意思是,当mary登录时需要敲入密码.进入和系统用户相同的软件库.这样作的目的是因为.cvs将纪录它的用户在软件库中的所有的动作.定义和系统使用者不同的身份.使用cvs.

例如;使用用户tom可以用以下的方式登录:

$cvs–d:etx:tom@funam.simple.com:/cvsrootlogin

(如果tom这个用户名在远端可内部是相同的,则tom@还可以省略)

同时,可以使用cvsloginout将所有的环境变量撤销.

使用GASSAPI接入

CVS还支持使用GASSAPI的TCP直接接入.在使用安转之前,需要将CVS重新编译以获得GASSAPI的支持.运用–with–gassapi来连接,或者用-a选向来连接.使用GASSAPI的认证等方式余地一种方式相同.

但在登录时.需要重新定义$CVSROOT如:

$cvs–d:gsever:usr@cvssever.com:/cvsrootlogin

使用kerberos直接连接

最简单的使用rsh的方法如上说述.这种方法的主要特点是所有数据都通过一个额外的程序.非常费时.如果安装了kerberos.可以直接用TCP连接.

同样CVS需要重新编译以获得keberos的支持可用--with-krb4来连接.这样传输的数据是没有加密的.如果要获得安全.必须在服务端和客户端都用`--enable-encryption来连接.此时,你应用通用的变量-x来要求加密.

在服务端需要编辑inetd.conf来运行cvskserver.客户端的缺省端口号是1999,如果想用其他端口号.需在用户端定义CVS_CLIENT_PORT

此时的登录命令应是

cvs-d:kserver:faun.example.org:/usr/local/cvsrootcheckoutfoo

用fork连接

用这方式,可以通过远程协议连接本地硬盘的软件库.换句话说,他能和:local:有相同的功能用这种方式的登录命令是

cvs-d:fork:/usr/local/cvsrootlogin

和用:etx:一样.缺省的主机名是cvs

三、cvs服务器架与应用实例

1.服务器安装配置

假设目前有一工作项目,需要用cvs来管理员码.这个开发组为内部3人,器ip分别是:192.168..1.2(用户名t1),192.168.1.3)(用户名时t3),193.168.1.3(用户名t3),远程用户一人,其主机是tom.example.com.(用户名是tom)

如果你已经安装了cvs,建立一cvs主机为cvs.exam.org的服务器非常简单.步骤大致如下:

1.1以root身份登录.建立软件库(repository)

$exportCVSROOT=/cvsroot

$mkdir/cvsroot

$cd/cvsroot

$cvsinit

1.2设置执行权限

$chmod/cvsroot/CVSROOT744(/ccvsroo/CVSOOT设置为只读)

$chmod/cvsroot764组号(/cvsroot对开发组可读写)

修改文件以利于其他人使用,因为开发组人员是系统用户,所以在这里用系统的用户名和password是比较好的.先编辑.rhosts件如下:

tom.example.com.tom

修改服务器上的/etc/inetd.conf文件,加入如下的句子

2401streamtcpnowaitroot/usr/local/bin/cvscvs-f--allow-root=/usr/cvsrootpserver

这样一来,一个基本的cvs服务器就建好了.

我们这里只是提供了一个基本的应用.cvs真正的细节应用非常复杂.我们这里只进行一些抛砖引玉的介绍.与兴趣的朋友可以细读它的安装文档.

2.应用实例

(使用主机上的cvs系统,可以telnet到主机上,然后使用,和本机使用没什么差别,所以本文一直不提)

假设上例中的tom想使用cvs主机上的cvs系统以和大家协作开发.首先它营配置自己的一些环境变量.首先编辑/etc/services'加入:

cvspserver2401/tcp

然后在.profile文件中加入如下代码

CVSROOT=:etx:psever:tom@cvs.exam.org:/cvsroot

ExportCVSROOT

这样他便可以使用$cvslogin来登录了.下面我们便以tom的具体使用为例子讲一下cvs的应用.和其他linux命令一样.cvs也有大量的参数.我么将在下一节做一个列表.

Tom在/usr/test目录下有如下文件

Ecample.cexampl2.ctes1.ctest2.cutimel.ctty.c

如果想在软件库建立自己的目录

$cd/usr/test

~test$cvsimport–m“tomfirstcreation”tomdirtomtomwork

Ntomdit/example.c

Ntomdit/exampl2.c

Ntomdir/test1.c

Ntomdir/test2.c

Ntomdir/utmel.c

Ntomdit/tty.c

Noconflictscreatbythisimport
命令说明import提交命令–m后加描述.tom发行商tomwork是发行标号.如果提示CVSROOT不对,可以用--d加CVSROOT

注:一切cvs的命令可以用cvscommand–H来获得帮助.这时服务器端的/cvs目录下多了一个tomdir子目录.内容下:

example.c,vexampl2.c,vtest1.c,vtest2.c,vtty.c,vutimel.c,v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州维博网络(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:企业网站建设、网站程序开发、手机APP客户端、平面设计、主机域名、虚拟空间、网站推广、网站优化、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2024 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表