| |
最近刚刚入职,公司要求必须熟悉CVS的使用,所以,就乘着周末复习了一下好久没有使用的这个东西。

CVS 的全称是 Concurrent Versions System ,中文名叫 版本控制系统。它可以在各种不同的系统下使用,比如windows 和 linux,在大部分的unix下也有相应的版本。CVS 在windows下的安装比较简单,这里就不多说了,如果有兴趣,可以去官网下载最新的版本。使用CVS的目的在于和同事一起方便快捷的开发同一个项目,CVS可以协助我们记录源文件的修改日期,修改人,并且可以返回到修改以前的一个状态。也就是我们可以随时抽调出以前的某一个文档修改。

CVS的基本原理是:它把这个项目的源文件存储着,然户记录每次修改的那些信息,而不必记录每次修改后的版本代码,这样节省了大量的空间。简单的打个比方来说,就好比有一个仓库,存储着很多的项目,这些项目由一个仓库管理员来统一管理。这样,就好像是一个人在修改项目一样,避免了很多的冲突。任何一个用户在使用仓库中的项目时,必须先把CVS中的项目下载到本地。用户所做的任何修改都是在本地进行的。修改完成后,然后用CVS命令进行提交,然后由仓库管理员统一进行修改,这样就做到了文件修改跟踪等。
一、CVS服务器的安装
  首先确认系统中是否安装CVS服务:  [root@localhost /]# rpm -qa|grep cvscvs-1.11.2-cvshome.7x.1  如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包,或者到http://www.cvshome.org下载。
  1、建立 CVSROOT
  目录,因为这里涉及到用户对CVSROOT里的文件读写的权限问题,所以比较简单的方法是建立一个组,然后再建立一个属于该组的帐户,而且以后有读写权限的用户都要属于该组。假设我们建一个组叫cvs,用户名是cvsroot。建组和用户的命令如下
#groupadd cvs #adduser cvsroot
  生成的用户宿主目录在/home/cvsroot(根据自己的系统调整)
  2、用cvsroot 用户登陆,修改 /home/cvsroot (CVSROOT)的权限,赋与同组人有读写的权限: 
  $chmod 771 . (或者770应该也可以)
3、建立CVS仓库,(仍然是 cvsroot 用户),用下面命令:
  $cvs -d /home/cvsroot init
  4、以root身份登陆,修改 /etc/inetd.conf(使用 xinetd 的系统没有此文件)和 /etc/services
  如果用的是 inetd 的系统,在 /etc/inetd.conf 里加入:     cvsserver  stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/cvsroot pserver
  说明:上面的行是单独一整行,/usr/bin/cvs 应该是你的cvs版本的命令路径,请根据自己的系统调整./home/cvsroot是你建立的CVSROOT的路径,也请根据上面建立目录的部分的内容做调整。
  如果是使用 xinetd 的系统,需要在 /etc/xinetd.d/ 目录下创建文件 cvspserver(此名字可以自己定义),内容如下:
  # default: on  # description: The cvs server sessions;
  service cvsserver  {  socket_type = stream  wait = no  user = root  server = /usr/bin/cvs  server_args = -f --allow-root=/cvsroot pserver  log_on_failure += USERID  only_from = 192.168.0.0/24  }
  其中only_from是用来限制访问的,可以根据实际情况不要或者修改。修改该文件权限:
  # chmod 644 cvspserver
  在/etc/services里加入:
  cvsserver 2401/tcp
  说明:cvsserver 是任意的名称,但是不能和已有的服务重名,也要和上面修改 /etc/inetd.conf 那行的第一项一致。
  5、添加可以使用 CVS 服务的用户到 cvs 组:
  以 root 身份修改 /etc/group,把需要使用 CVS 的用户名加到 cvs 组里,比如我想让用户 laser 和gumpwu 能够使用 CVS 服务,那么修改以后的 /etc/group 应该有下面这样一行:
cvs:x:105:laser,gumpwu
  在你的系统上GID可能不是105,没有关系。主要是要把laser和gumpwu用逗号分隔开写在最后一个冒号后面。当然,象RedHat等分发版有类似linuxconf这样的工具的话,用工具做这件事会更简单些。
  6、重起inetd使修改生效:
  #killall -HUP inetd
  如果使用的是 xinetd 的系统:
  # /etc/rc.d/init.d/xined restart
然后察看cvs服务器是否已经运行:[root@localhost /]# netstat -lnp|grep 2401  tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 1041/xinetd 则说明cvs服务器已经运行。
  二、管理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
  编辑 writers 文件,加入下面几行:
  laser   gumpwu   henry

第三个字段就是等效系统用户名,实际上就是赋与一个 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
  编辑 writers 文件,加入下面几行:
  laser   gumpwu   henry

第三个字段就是等效系统用户名,实际上就是赋与一个 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
  编辑 writers 文件,加入下面几行:
  laser   gumpwu   henry

第三个字段就是等效系统用户名,实际上就是赋与一个 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
  编辑 writers 文件,加入下面几行:
  laser   gumpwu   henry
注意:writers中的用户不能在readers中,要不然不能上传更新文件

Tags: ,
by admin | 来自 本站原创 | 不指定 2007-7-21 23:25 | 分类: 生活 | 评论(1) | 引用(21) | 阅读(1547)
废品回收 Homepage
2007-8-5 10:40
文采飞扬,佩服。废品回收
分页: 1/3 第一页 1 2 3 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]