<!----> 简介 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仓库了,然后,我们可以把这个测试项目的文件删除,试验如何从仓库获取文件这会在后面的客户端文章进行说明。 该文章借鉴了何伟平先生的很多内容,在此表示感谢! <!----> |
相关推荐
### CVS配置详解 #### 一、CVS简介与配置基础 CVS(Concurrent Versions System)是一种源代码版本控制系统,广泛应用于软件开发过程中对代码版本的管理。它可以帮助团队成员协同工作,确保代码的一致性和可追溯性...
在Eclipse的CVS配置中,勾选“CVSNT Clients”下的“Respond as cvs1.11.2 to version request”选项。这是为了确保Eclipse与CVSNT之间的兼容性,因为不同版本的CVS可能存在通信协议的差异。 5. **连接到CVS仓库**...
《CVS配置管理 从入门到精通》是针对软件开发团队协作中不可或缺的版本控制工具——CVS(Concurrent Versions System)的详细教程。CVS作为一个C/S架构的系统,其核心功能在于协助多用户对同一份代码或文档进行协同...
### CVS配置管理工具使用手册详解 #### 一、CVS简介 CVS(Concurrent Versions System),即并发版本系统,是一种广泛使用的开源版本控制系统。它主要用于软件开发过程中的源代码管理,同时也适用于其他类型的文件...
【CVS配置详解】 CVS(Concurrent Versions System)是一种广泛使用的版本控制系统,它允许团队成员协同工作并跟踪代码的变化。在Windows环境下,通常使用CVSNT作为CVS的实现,因为它提供了对Windows系统的良好支持...
总的来说,CVS配置与使用是软件开发中的重要环节,它有助于团队成员间的协同工作,提高代码管理效率,避免版本冲突,同时提供了代码历史追踪和恢复旧版本的能力。正确配置和熟练使用CVS,能够极大地提升开发效率和...
【Myeclipse与CVS配置】是关于在Myeclipse集成开发环境中配置和使用CVS(Concurrent Versions System,协同版本系统)的教程。CVS是一个开源的版本控制系统,允许开发者对源代码进行版本管理,便于团队协作和项目...
CVS 配置方法讲解 CVS(Concurrent Versions System)是一种版本控制系统,帮助开发人员管理项目文件版本,确保项目成员之间的协作发展。下面是 CVS 配置方法的详细讲解。 服务器端配置 服务器端使用 Linux ...
### CVS配置与使用详解 CVS(Concurrent Versions System)是一种源代码版本控制系统,主要用于软件开发过程中的版本管理和协作。本文将基于“CVS配置.doc”文档内容,深入解析CVS的安装、配置及在Eclipse环境下的...
标题与描述均聚焦于"MyEclipse CVS配置详解"这一核心主题,强调了版本控制在团队开发中的重要性,尤其突出了CVS作为一款优秀的开源版本控制软件的角色,以及Eclipse平台对其内置支持所带来的便利。接下来,我们将...
CVS 配置apiCVS 配置apiCVS 配置apiCVS 配置api
【cvsnt与TortoiseCVS配置详解】 在软件开发过程中,版本控制系统扮演着至关重要的角色,确保团队协作中的代码同步与管理。cvsnt是CVS在Windows平台上的实现,提供了强大的版本控制功能。TortoiseCVS则是一个与...
【CVS配置管理】是一种版本控制系统,用于管理软件开发中的源代码和其他文件,确保多人协作时的文件同步和冲突解决。CVS(Concurrent Versions System)的核心思想是在服务器上设立一个中央仓库,开发者从仓库中检出...
【CVS配置及使用视频教程】是一套针对版本控制系统CVS的详细教学资源,旨在帮助用户深入了解并熟练掌握CVS的配置与应用。CVS,全称Concurrent Versions System,是一种广泛使用的开源版本控制系统,它允许多个开发者...
【CVS配置】是一种在软件开发中用于版本控制的系统,它允许多个开发者协同工作,同时跟踪和管理项目中的文件更改。CVS(Concurrent Versions System)是开源的,广泛应用于开源软件项目,帮助团队成员有效地共享代码...
MyEclipse CVS配置是如何的呢?具体的实施是什么步骤,其中需要注意的又是什么呢?这篇文章我们就向你介绍MyEclipse CVS配置的详细情况。
### Linux 下 CVS 配置详解 #### 一、概述 本文档主要介绍如何在 Linux 系统中配置 CVS (Concurrent Versions System) 版本控制系统。CVS 是一种广泛使用的开源版本控制系统,适用于团队协作开发环境。通过合理的...
【Cvs配置用户和权限管理】 Cvs(Concurrent Versions System)是一种广泛使用的版本控制系统,尤其在开源社区中颇受欢迎。然而,由于其源自Unix系统,对于非Unix环境,如Windows,配置起来可能会较为复杂。在...