首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | linux相关 | linux认证 | 下载中心 | 专题
oklinux
 系统管理:中文环境 系统管理 桌面应用 内核技术 Linux基础:安装配置 常用命令 经验技巧 软件应用 Linux数据库:Mysql POSTGRE
 网络管理:网络安全 网络应用 Linux服务器 编程开发:PHP CC++ Python Perl SHELL 嵌入式开发 | PHP基础 PHP技巧 PHP应用 PHP文摘
 首页 linux资讯动态 Linux专题 | 其他Unix Linux解决方案 硬件相关 Linux认证 企业应用 Apache | 相关下载:资料 参考手册 服务器
 → 当前位置:首页>网络管理>linux服务器>正文

并行版本系统 CVS简单教程

OKLinux www.oklinux.cn 2006-05-26 来源:Chinaitlab收集整理 会员收藏 游客收藏

    CVS 是 Concurrent Version System(并行版本系统)的缩写,用于版本管理。如果大家曾经参与过多人协作开发的项目,大家肯定有这样的痛苦经历:由于多个人同时修改同一个文件,自己辛辛苦苦修改的程序被别人彻底删除了。另外,如果你的软件/程序已经发布了三个版本,而这时候用户需要你修改第二个版本的东西,也许你会因为只保留了最新版本而痛哭流涕。还有就是你对程序做了一些修改,但是修改很少,你只想给远方的同事发一个两个版本之间的差别文件,这样可以免于邮箱不够大,网速太慢之类的问题。为了解决类似这样的问题,以及诸如生成补丁文件,历史版本修改等,一帮黑客(褒义)在原先 Unix 体系里很成熟的 SCCS 和 RCS 的基础上,开发了 CVS.(SCCS:Source Code Control System,RCS:Revision Control System)

    CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库管理员统一管理这些源程序。这样,就好象只有一个人在修改文件一样。避免了冲突。每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用 cvs 命令进行提交,由 cvs 仓库管理员统一修改。这样就可以做到跟踪文件变化,冲突控制等等。

    由于 CVS 是典型的 C/S 结构的软件,因此它也分成服务器端和客户端两部分。不过大多数 CVS 软件都把它们合二为一了。


 

结合文档和一些网上资源,我写一点非常简单的“速成”的教材.希望对大家有用.

下面是我的步骤和做法:

前提要求:

  • root 权限;
  • CVS软件,请找到相关的rpm,tgz,deb 等包装上,或者到 
    http://www.cvshome.org/CVS/Dev/code
    下载原程序编译安装,这里我不准备介绍它的安装,请参考CVS自身的文档安装.我使用Slackware的tgz包,安装的命令是
    #installpkg cvs*.tgz
    其他包请参考对应包管理工具的命令.
  • 一定的系统资源,要有一定内存(32M就能工作得很好),要一定的磁盘空间,看你的项目的大小和多少而定.
架设CVS服务器:
  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 那行的第一项一致.这里我用的是 CVS 的口令认证方式,CVS 还有其他认证方式,我没有做试验,如果您有经验,请补充,谢谢.
       

  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

这样服务器就设置完成了.我们接着搞客户端.

设置客户端

如果是 Linux(或者其他 *nix),客户端和服务器端的软件是一样的,如果是Win,MAC等平台,请到

http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel

找相应的客户端软件,这里我先说一下在 Linux(*nix)里怎么做:

  1. 设置环境变量CVSROOT:

     

      $export CVSROOT=:pserver:laser@the_server_name:/home/cvsroot

      注意:这里的pserver是访问方式,我在上面设置的是口令认证,所以这里是pserver,如果你的CVS服务器设置成别的访问模式,那么需要相应修改.laser是可以使用 CVS服务器的用户名,这里可以根据你的设置修改,我在这个版本设置的是直接使用系统用户的口令文件,也就是说laser必须是CVS服务器上的合法用户,这里当然有安全问题,CVS可以设置成为拥有自己的用户,我将在以后的版本里面增加这些内容,或者您也可以提供一些补充,或者直接读CVS的文档.the_server_name是CVS服务器的名称或者IP地址,根据你的情况填写,/home/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务器设置做修改或者询问管理员.你可以把这行放到你的shell的profile里(.bash_profile,.profile等)这样就不用每次敲一长串命令了.
       

  2. 登陆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只有读权限.

[1] [2] 下一页  

共6页: 上一页 1 [2] [3] [4] [5] [6] 下一页
上一篇:Linux小型日程表挑战大型群件   下一篇:红帽集成Xen虚拟化解决方案详解

收藏于收藏夹】 【评论】 【推荐】 【投稿】 【打印】 【关闭

相关文章
·红帽集成Xen虚拟化解决方案详解
·Linux小型日程表挑战大型群件
·Linux上实现虚拟化技术的优势
·Linux on POWER上的动态逻辑分区
·虚拟技术的现状与红帽集成情况
·RouterOS无线接入方案
·落在实处 虚拟化技术应用
·介绍虚拟路由冗余协议(VRRP)
·Xen和虚拟化技术学习指南
·RouterOS2.96脚本详解
发表评论
密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
站内搜索
阅读排行榜
·Linux服务器存储空间巧妙
·详解远程SHELL下安装配置R
·Xen和虚拟化技术学习指南
·LVS集群学习笔记(NAT\DR\
·linux下文件服务Vsftp详细
·在Linux上用LVS搭建负载均
·基于Linux的集群环境构建
·安装大型Linux集群(4):节
·Linux系统邮件服务器常见
·RedHatAS4 WEB服务及虚拟
最新文章
·Linux系统下玩经典游戏 CS
·五步骤设置Web服务器集群
·Linux操作系统下IPtables
·Samba服务器的搭建与配置
·Linux系统下Samba服务器多
·Fedora Core6下apache+mys
·Ubuntu 7.04 系统安装APAC
·FTP服务器中将Linux用户限
·Ubuntu 7.04 系统安装APAC
·Ubuntu Linux Apach虚拟主
·在Linux系统中Apache与Tom
·Fedora core Linux网络配
·Linux系统下Jsp环境:Apac
·Ubuntu Linux系统下的Sudo
·Debian Linux 操作系统下J

设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2007 All rights reserved OKLinux.Cn 版权所有