`
yangzisai
  • 浏览: 85486 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

CVS服务器快速指南

    博客分类:
  • cvs
阅读更多
CVS服务器快速指南
来源:UML软件工程组织 (2005-08-24 16:59:20)



  简介

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

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

  由于 CVS 是典型的 C/S 结构的软件,因此它也分成服务器端和客户端两部分。不过大多数CVS 软件都把它们合二为一了。我们这里就分别从服务器和客户端的角度讨论cvs的使用。

  Cvs服务器安装

  首先确保系统安装有cvs:

  [root@mail xinetd.d]# rpm -qa|grep cvs

  cvs-1.11.1p1-3

  如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包。

  一 创建CVS属主用户:

  # useradd -d /cvsroot cvs

  # chmod 771 /cv sroot

  二、建立CVS仓库(初始化cvs)

  # su cvs

  $ cvs -d /cvsroot init

  $exit

  #

  四、启动cvs服务器

  在/etc/xinetd.d/目录下创建文件cvspserver,内容如下:

  # default: on

  # description: The cvs server sessions;

  service cvspserver

  {

  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

  然后重新启动xinetd:

  # /etc/rc.d/init.d/xined restart

  然后察看cvs服务器是否已经运行:

  [root@mail xinetd.d]# netstat -lnp|grep 2401

  tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd

  则说明cvs服务器已经运行。

  五、创建用来访问cvs的用户

  前面创建的cvs用户是cvs仓库管理用户,而为了让用户访问则还需要一个访问用户:

  # useradd cvspub

  # usemod –G cvs cvspub

  这里添加了一个用户cvspub,并且将该用户添加到cvs组中。

  六、管理cvs服务器

  管理 cvs 服务器.服务器可以用了,现在大家最关心的就是如何管理服务器,比如,我想让一些人有读和/或写 CVS 仓库的权限,但是不想给它系统权限怎么办呢?不难,cvs初始化结束以后,在管理员用户(这里是cvs用户)的主目录里有一个 CVSROOT 目录,这个目录里有三个配置文件:passwd, readers, writers。我们可以通过设置这三个文件来配置 CVS 服务器,下面分别介绍这几个文件的作用:

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

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

  如果你希望一个用户只是 cvs 用户,而不是系统用户,那么你就要设置这个文件,刚刚安装完之后这个文件可能不存在,你需要以cvs管理员身份(su cvs)用户手工创建,当然要按照上面格式;

  第二个字段是该用户的加密口令,就是用 crypt (3) 加密的,你可以自己写一个程序来做加密,也可以用两个偷懒的方法:先创建一个系统用户,名字和 cvs 用户一样,口令就是准备给它的 cvs 用户口令,创建完之后从 /etc/shadow 把该用户第二个字段拷贝过来,然后 再把这个用户删除.这个方法对付数量少的用户比较方便,人一多就不合适了,而且还有冲突条件(race condition)的安全隐患,还要 root 权限,实在不怎么样,不过权益之计而已;另外一个方法就是利用apche的htpasswd命令创建passwd用户,添加用户只需要htpasswd passwd username即可添加用户到passwd文件中,不过需要在文件中对应行的最后添加一个“:”冒号和对应的等效系统用户名;最好的就是自己编写一个程序了来生成这个passwd文件了。

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

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

  只有读权限。

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

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

  cvsuser1, cvsuser2, henry, betty, anonymous

  其中 laser 和 gumpwu 是系统用户,而henry, betty, anonymous 我们都不想给系统用户权限,并且 betty 和 anonymous 都是只读用户,而且 anonymous 更是连口令都没有。

  然后编辑 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项目。

  将一个工程文件置于CVs中进行版本控制,在CVS 术语中称作导入(import)。从名字上就可以看出,在导入前需要为此作些准备工作。

  输入操作的基本要求是有个“干净”的目录结构。“干净”的意思是不需要版本控制的文件都被移走了(如编译生成的文件,备份文件等等)。如果工程已经开始一段时间了,这就显得很重要。在目录中也许有些是不打算将其置于版本控制下的文件,但是又想将他们放在这里,这种情况下,你要在输入之前将它们移走,然后再移回来。

  注意的是CVS 认为空目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录,需要在其下创建一个哑文件。建议你创建一个名为 README.txt 的文件,其内容为对目录的简要说明。

  进入到已有项目的目录,比如叫 cvstest:

  $cd cvstest

  运行命令将项目文件导入到cvs仓库中:

  $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仓库了,然后,我们可以把这个测试项目的文件删除,试验如何从仓库获取文件这会在后面的客户端文章进行说明。

  该文章借鉴了何伟平先生的很多内容,在此表示感谢!



以上的教程我只做到第五步,我打算采用SSH的方式连接CVS服务器,未配置任何的CVS管理设置。

使用ssh隧道访问很简单,创建linux用户,加入到cvs组中,即可在客户端通过ssh远程访问cvs服务器。cvsroot相关配置如下:

# chgrp cvs  cvsroot
# chmod g+ws cvsroot

分享到:
评论

相关推荐

    CVS服务器设置指南

    CVS服务器设置指南,CVS服务器设置指南

    CVS服务器搭建指南

    CVS服务器搭建指南 Windows 平台上CVS/SSH 客户端配置指南

    CVS 服务器与客户端配置指南.doc

    1 CVS下载 1.1 安装 CVSNT 1.2 建立Windows系统账户 1.3 CVS简介 2 CVS服务器端配置 2.1 配置服务器端CVS文件存放位置 2.2 配置Windows Server环境变量 2.3 为CVS添加多用户 2.4 为CVS目录加上用户权限设置等等

    CVS服务器与客户端配置指南

    个人精心搜集整理的CVS服务器与客户端配置,因本人在网上找了很多资料,都重复,所以自己决心整理一份出来,供大家参考参考。。。

    CVS_服务器与客户端配置指南

    CVS_服务器与客户端配置指南,很详细的说明。

    CVS(SSH)客户端配置指南

    我建议两篇文档单独看,这不是完全的中英对译,两个文档解析了cvs openssh 以及 putty 之间配置! 刚进公司的时候,公司用cvs管理代码,由于要用ant打war包,搞了两个星期才解决的 真心希望改资源能够帮助到大家

    CVS使用指南

    Eclipse本身内置了CVS客户端,只要再建立一个CVS服务器就可以使用这一功能强大的版本控制系统。CVS的功能虽强大,但一般项目通常只用到其20%的功能,所以只要了解最常用的操作就差不多了,本文将以面向公司实际项目...

    Eclipse快速上手指南之使用CVS

    Windows下也有简单易用的CVS服务器,这里我们推荐CVSNT,可以下载CVSNT2.0.51a,安装并启动CVSNT:然后切换到Repositories面板,添加一个Repository,命名为/cvs-java,CVSNT会提示是否初始化这个Repository,选择是...

    Ubuntu服务器入门指南.pdf

    详细介绍Ubuntu server 安装、管理、网络配置、防火墙配置、FTP 服务器、HTTPD - Apache2 Web 服务器、邮件服务、Squid - 代理服务器、CVS 服务器、数据库等等。

    WinCVS-管理-配置管理-CVS使用指南.doc

    对cvsnet服务器和客户端工具wincvs进行介绍,以及使用说明等

    WinCVS 安装配置指南

    WinCVS 是CVS 的一个客户端软件,它运行在Windows 平台上,采用图形化方式登录CVS 服务器,进行CVS 相关的操作与管理,不需要学习复杂的CVS 命令

    SVN服务器搭建手册

    SVN 适用于java以及NET的源代码管理,比CVS 更好用些。希望对做团队项目的工作者有所帮助

    Git权威指南PDF完整版

    Git权威指南 目 录 前 言 第1篇 初识Git 第1章 版本控制的前世和今生/ 2 1.1 黑暗的史前时代/ 2 1.2 CVS—开启版本控制大爆发/ 5 1.3 SVN—集中式版本控制集大成者/ 7 1.4 Git—Linus 的第二个伟大作品/ 9 第2章 ...

    TortoiseGit日常使用指南

    对比常用的 CVS, Git 至少有以下几个优点: 不需要连接服务器就能实现版本管理; 一个库不管有多少层目录, 只有一个管理目录 在commit 时, 可以将整个项目 commit, 这样可以实现不需要添加 Tag就 保存整个版本信息....

    GIT 操作规范大全

    《Git权威指南.pdf》全强大很细,但有些东西太广太细,不适合快速上手。本文档适合在项目实践中想快速上手git的新手。先看本文档基本上手,在实际使用中遇到什么问题在深入研究《Git权威指南.pdf》或者google,这种...

    Git权威指南【样张】

    《git权威指南》是git领域的集大成之作,是一本关于git的百科全书,在广度、深度和实战性上让同类作品望尘莫及。作者是国内顶尖的版本控制专家和咨询顾问之一,本书得到了git官方维护者junio c hamano和iteye创始人...

    unix平台下c语言高级编程指南

    内容简介回到顶部↑ 本书是专为在UNIX平台下用C语言编制程序的人写的。是以POSIX为标准,主要以C语言为基础,详细介绍了UNIX平台下编写各种应用程序的范例和方法。全书分四个部分,共十五章。...15.4 并发版本控制CVS

Global site tag (gtag.js) - Google Analytics