您的位置:软件测试 > 开源软件测试 > 开源配置管理工具 > cvs
配置管理工具CVS简单教程
作者:网络转载 发布时间:[ 2012/12/4 16:57:47 ] 推荐标签:

登陆CVS服务器:
 

$ cvs login,这时候 cvs 会问你口令,请把你在 CVS 服务器上的口令敲进去,这里是 laser 在 CVS服务器上的系统用户的口令:
 Passwd:xxxxxxxx

成功登陆后将在你的家目录建立一个 .cvspass 文件,以后不用输入口令了.

好,客户端设置完成,简单吧.
管理 cvs 服务器

服务器可以用了,现在大家关心的是如何管理服务器,比如,我想让一些人有读和/或写 CVS 仓库的权限,但是不想给它系统权限怎么办呢?


不难,在 cvs 管理员用户(在我这里是 cvsroot 用户)的家目录里有一个 CVSROOT 目录,这个目录里有三个配置文件,passwd, readers, writers,我们可以通过设置这三个文件来配置 CVS 服务器,下面分别介绍这几个文件的作用:

passwd:cvs 用户的用户列表文件,它的格式很象 shadow 文件:

{cvs 用户名}:[加密的口令]:[等效系统用户名]

如果你希望一个用户只是 cvs 用户,而不是系统用户,那么你要设置这个文件,刚刚安装完之后这个文件可能不存在,你需要以 cvs 管理员用户手工创建,当然要按照上面格式,第二个字段是该用户的加密口令,是用 crypt (3) 加密的,你可以自己写一个程序来做加密,也可以用我介绍的偷懒的方法:先创建一个系统用户,名字和 cvs 用户一样,口令是准备给它的 cvs 用户口令,创建完之后从 /etc/shadow 把该用户第二个字段拷贝过来,然后再把这个用户删除.这个方法对付数量少的用户比较方便,人一多不合适了,而且还有冲突条件(race condition)的安全隐患,还要 root 权限,实在不怎么样.不过权益之计而已.写一个小程序并不难,可以到 linuxforum 的编程版搜索一下,有个朋友已经写了一个贴在上面了.

第三个字段是等效系统用户名,实际上是赋与一个 cvs 用户一个等效的系统用户的权限,看下面的例子你明白它的功能了.

readers:有 cvs 读权限的用户列表文件.是一个一维列表.在这个文件中的用户对 cvs只有读权限.

 

writers:有 cvs 写权限的用户的列表文件.和 readers 一样,是一个一维列表.在这个文件中的用户对 cvs 有写权限.

上面三个文件在缺省安装的时候可能都不存在,需要我们自己创建,好吧,现在还是让我们用一个例子来教学吧.假设我们有下面几个用户需要使用 cvs:

laser, gumpwu, henry, betty, anonymous.

其中 laser 和 gumpwu 是系统用户,而 henry, betty, anonymous 我们都不想给系统用户权限,并且 betty 和 anonymous 都是只读用户,而且 anonymous 更是连口令都没有.那么好,我们先做一些准备工作,先创建一个 cvspub 用户,这个用户的责任是代表所有非系统用户的 cvs 用户读写 cvs 仓库.

#adduser
...

然后编辑 /etc/group,令 cvspub 用户在 cvs 组里,同时把其它有系统用户权限的用户加到 cvs 组里.(见上文)

然后编辑 cvs 管理员家目录里 CVSROOT/passwd 文件,加入下面几行:

laser:$xxefajfka;faffa33:cvspub
gumpwu:$ajfaal;323r0ofeeanv:cvspub
henry:$fajkdpaieje:cvspub
betty:fjkal;ffjieinfn/:cvspub
anonymous::cvspub

注意:上面的第二个字段(分隔符为 :)是密文口令,你要用程序或者用我的土办法生成.

编辑 readers 文件,加入下面几行:

anonymous
betty

编辑 writer 文件,加入下面几行:

laser
gumpwu
henry

这样 ok 了,你再用几个用户分别登陆测试,会发现一切都 ok 了.这里面的原理和说明我想不多说了,其实很简单,和系统管理用户的概念是一样的.
 

现在服务器和客户端都设置好了,那么怎么用呢,我在这里写一个简单的(估计也是常用的)命令介绍:

首先,建立一个新的CVS项目,一般我们都已经有一些项目文件了,这样我们可以用下面步骤生成一个新的CVS项目:

进入到你的已有项目的目录,比如叫 cvstest:
$cd  cvstest
运行命令:
$cvs import -m "this is a cvstest project" cvstest     v_0_0_1     start
说明:import 是cvs的命令之一,表示向cvs仓库输入项目文件.
              -m参数后面的字串是描述文本,随便写些有意义的东西,如果不加 -m 参
数,那么cvs会自动运行一个编辑器(一般是vi,但是可以通过修改环境变量
EDITOR来改成你喜欢用的编辑器.)让你输入信息,
             cvstest 是项目名称(实际上是仓库名,在CVS服务器上会存储在以这个名字
命名的仓库里.)
             v_0_0_1是这个分支的总标记.没啥用(或曰不常用.)
             start 是每次 import 标识文件的输入层次的标记,没啥用.
这样我们建立了一个CVS仓库了,然后,我们可以把这个测试项目的文件删除.试验一下如何从仓库获取文件.这里我假设上面的所有客户端工作你都已经做过了.

运行下面的命令:

   $cvs checkout cvstest
从仓库中检索出cvstest项目的源文件.
如果你已经做过一次checkout了,那么不需要重新checkout,只需要进入cvstest项目的目录,更新一把行了:

$cd cvstest
$cvs update一下即可.又或者你不想直接更新,只是想看看有没有更新的东西,那么:
$cvs status
这时后会打印出一长串状态报告(你可能需要用类似less这样的命令分页显示,或者定向到一个输出文件里慢慢看.),对项目中的每个文件有一份状态报告,类似这样:
===================================================================
File: foo.c             Status: Up-to-date

   Working revision:    1.1.1.1 'Some Date'
   Repository revision: 1.2     /home/cvsroot/cvstest/foo.c,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

这里重要的是 Status 栏,这里总共可能有四种状态:
Up-to-date:表明你要到的文件是新的.
Locally Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新.
Needing Patch:表明有个哥们已经修改过该文件并且已经提交了!你的版本比仓库里的旧.
Needs Merge:表明你曾经修改过该文件,但是偏偏有个不识相的也修改了这个文件,而且还提交给仓库了!

如果你只是想保持软件的同步的话(象我),那么上面的东西足够用了.可是如果多人协作开发项目的话,可不是了这么简单了.当你参加项目,维护文件时,需要更多命令,比如说你我都是某 nasdaq 项目的开发人员:

1,你对某个文件做了修改,比如说改了ceo.c,加了一行程序:printf("where can I find VC to cheat!");
改完之后你要把修改提交给仓库,用命令:
$cvs commit -m "add a complain" ceo.c
或者是:
$cvs commit -m "worry about money"
让cvs帮你检查哪个文件需要提交.

2,当我开始干活的时候,可能我先:
$cvs status

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd