搜档网
当前位置:搜档网 › cvs的使用

cvs的使用

cvs的使用
cvs的使用

第一章 Cvs概述

1.1CVS简介及基本原理

CVS 的全称是Current Version Control. CVS是一种GNU 软件包.由

Intersolv公司开发。它是一种基于RCS系统的维护工具.它明确的将源文件的存储和用户的工作空间独立开来,有在一定的模式上扩展了RCS的恢复提交功能. 并使其有利与并行开发.

CVS 将源文件的RCS 文件根据其源码树的层次集中在一个目录下,该目录的绝对路径由环境变量CVSROOT 定义.

可见该目录可以分成两部分:一部分为${CVSROOT}/CVSROOT,它包含CVS所需的一些管理文件.另一部分为源文件所形成的RCS 文件,并按软件开发的源码树的结构来构成.

1.2CVS 在进行源代码管理时的特点

1.2.1源代码空间与用户空间分离.

CVS 系统将源代码文件放在repository下,用户要修改文件必须将

repository 下的文件作一个拷贝之后才能进行。

1.2.2并发访问

CVS 系统允许多个开发人员同时获取同一文件的的同版本源文件.开发人员提取一个文件时,将在自己的工作空间建立一个与其他开发人员相互独立的拷贝,此文件的版本号与文件“头”版本相同,除非他用commit 命令完成版本的永久性升级.而此时,其他用户可用update 命令是自己的版本号与”

最新的头版本号”相一致.

CVS系统是一个Copy-Modify-Merge 的算法而不是lock-modify-unlock机制这种算法的好处在于,软件开发人员可以得到一份源文件的拷贝(Copy),并不会对该文件上”锁”,因此为并行开发提供了可能,在得到拷贝后, 开发人员可以在自己的开发环境下进行修改(Modify),然后提交自己修改后的文

件,与源文件进行合并(Merge)形成新的版本。

1.3专业术语:

repository:仓库。在cvs里,就是存放版本历史记录的地方。

pserver:是cvs用来接受远程的cvs 命令用的。cvs有两种模式, 一种是local, 一种是remote.

cvsroot:当使用cvs的时候,必须设定CVSROOT这个环境变数,或是用-d 这个选项来指定。

第二章 Linux CVS Server

2.1服务器端配置

2.1.1Linux环境

OS环境:RedHat Linux 9

CVS:cvs-1.12.9.tar.gz (下载地址:https://www.sodocs.net/doc/0d6236136.html,)

2.1.1.1源码包安装

1、检查RedHat Linux 9是否缺省安装了CVS。输入命令:

[root@VLinux root]# rpm -qa | grep cvs

2、如果出现以下显示则说明已经安装有CVS,

rpm -e cvs-1.11.2-10

3、卸载命令:

[root@VLinux root]# rpm -e cvs-1.11.2-10

4、正式安装

[root@VLinux src]# tar -zxvf cvs-1.12.9.tar.gz

[root@VLinux src]# cd cvs-1.12.9

[root@VLinux cvs-1.12.9]# ./configure --prefix=/usr/local/cvs

--exec-prefix=/usr --disable-server-flow-control

[root@VLinux cvs-1.12.9]# make

[root@VLinux cvs-1.12.9]# make install

2.1.1.2配置服务

1、加入cvs服务

[root@VLinux root]#vi /etc/services

cvspserver 2401/tcp #pserver cvs service

cvspserver 2401/udp #pserver cvs service

注:一般redhat9缺省就有cvs服务

在Rad Hat中使用xinetd来启动CVS服务。

在/etc/xinetd.d目录下为CVS服务创建一个配置文件,例如:

/etc/xinetd.d/cvspserver,编辑/etc/xinetd.d/cvspserver,输入如下内容:service cvspserver

{

disable = no

socket_type = stream

wait = no

user = root

env = HOME=

server = /usr/bin/cvs

server_args = -f --allow-root=/home/cvsroot pserver

}

注:

1)pserver表示是口令认证的访问方式,是最常用的方式,其他还有gserver,kserver,ext,如果想要更高的安全性可以使用ssh来加密口令和数据流。

2)--allow-root是指定Repository的目录,可以建立多个Repository

然后重新启动xinetd:

[root@VLinux root]# /etc/rc.d/init.d/xinetd restart

Stopping xinetd: [ OK ]

Starting xinetd: [ OK ]

重新启动xinetd服务后,CVS服务也开始工作了。

2、检查服务是否启动。

输入以下命令:

$ netstat –na|grep 2401

可以看到cvs服务侦听在2401端口

tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN

这表明cvs的服务器环境就基本搭建成功。

2.1.1.3初始化CVS服务器

1、创建cvs用户和用户组

例如:

创建一个名为cvs的组和一个名为cvsroot的用户,以后要访问CVS服务的用户加入cvs这个组:

[root@VLinux root]# groupadd cvs

[root@VLinux root]# useradd -g cvs -G cvs -d /home/cvsroot -s

/sbin/nologin cvsroot

[root@VLinux root]# chmod 755 /home/cvsroot

2、初始化:

[root@VLinux root]# cvs -d /home/cvsroot init

执行以上命令后,在/home/cvsroot目录中就产生了CVSROOT目录,其中存放了一些配置文件,如config等。

3、设置权限:

[root@VLinux root]# chown -R cvsroot.cvs /home/cvsroot

[root@VLinux root]# chmod -R ug+rwx /home/cvsroot

[root@VLinux root]# chmod 644 /home/cvsroot/CVSROOT/config

4、建立密码生成文件passwdgen.pl,并设置为可执行

[root@VLinux root]# vi /home/cvsroot/passwdgen.pl

#!/usr/bin/perl

srand (time());

my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";

my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);

my $plaintext = shift; my $crypttext = crypt ($plaintext, $salt);

print "${crypttext}\n";

5、建立CVS用户,生成密码:

[root@VLinux root]# chmod +x /home/cvsroot/passwdgen.pl 例如:要生成的密码为"123456",则使用如下命令

[root@VLinux root]# /home/cvsroot/passwdgen.pl "123456"

MbQ2iaN85u3mM

结果"MbQ2iaN85u3mM"即为所要的密码

6、创建配置文件:passwd

[root@VLinux root]# vi /home/cvsroot/CVSROOT/passwd 用户名:密码:cvsroot

例如:

gx:MbQ2iaN85u3mM:cvsroot

6、创建配置文件: writers(可读写)和readers(只读)

[root@VLinux root]# vi /home/cvsroot/CVSROOT/writers

[root@VLinux root]# vi /home/cvsroot/CVSROOT/readers

7、测试连接

[root@VLinux root]# cvs

-d :pserver:jasonseaver@192.168.0.5:/home/cvsroot login

2.1.2Windows环境

OS环境:Windows NT4 服务器、工作站SP6, Windows 2000服务器或专业版,Windows XP专业版。

CVS:CVSNT 1.11.1.3 (下载地址: https://www.sodocs.net/doc/0d6236136.html,)

1.以管理员账号登陆,首先修改环境变量,设定路径。

注:与CVSNT相关的内容最好安装到NTFS分区上,也尽量不要使用含有空格的目录名或者文件名。

例如:CVSNT安装目录为D:\cvs\cvsnt目录。

点击控制面板,系统属性,高级,环境变量,系统变量中的Path,添加上D:\cvs\cvsnt并保存设置。

2.执行安装程序,修改安装目录,一步步完成安装。

3.从开始菜单的程序组中启动CVSNT配置程序Configure Server。如果已

经运行了,则停用重启。

4.选择第二个选项卡,点击的Add按钮添加数据库根,可以有多个。

例如:设定/work为工作项目的存储根。

5.选择第三个选项卡Advanced,勾上全部选项,包括Use local users

instead of domain。设置临时目录,假设为E:\work\cvstemp。

注意:要保证临时目录的安全设置(右键点击目录属性,共享,权限)给所有帐号以完全控制权限,包括SYSTEM帐号。不能把临时目录设在诸如C:\WINNT\TEMP或者C:\Documents and Settings下的任何地方,因为这些地方对于用户的访问是有限制的。

6.点击应用以保存设置。

7.回到第一个选项卡,点击Start按钮,服务应该正常启动运行了。如果有

问题,可以打开一个命令行窗口,输入path命令来检查路径是否已经设置正确,也许需要重新启动来使设置生效。

8.设置cvsroot,打开一个命令行窗口,输入如下命令:

set cvsroot=:pserver:<计算机名>:/work

9.设置用户名密码:

cvs passwd -a <服务器上的真实用户名>

这一命令设定CVS中的用户名和密码,输入后将提示你输入密码。

给真实用户设定一个不同的使用名alias:

cvs passwd -a -r <服务器上的真实用户名>

注:名字里最好不要使用任何空格。如果必须的话,可以用双引号括起来。

2.2 客户端配置和使用

2.2.1Winnt

1. 从https://www.sodocs.net/doc/0d6236136.html,下载,以默认设置进行安装即可。

2. 安装后启动WinCVS,初始界面如下图:

3. 首先,按Ctrl-F1进行一些参数设置,按照下图进行设置。

4. 然后,按下工具栏右侧的文件夹按钮,设置存放代码的默认目录。

5. 在check out代码之前,选择Admin菜单的Login菜单项进行登录。

6. 在选择了Login之后会出现下面的对话框:

7. 按下下拉框右侧的那个按钮,会弹出CVSROOT设置向导,如下图所示:

8. 点击OK后会回到登录设置窗口,此时下拉框的文本区中就有了CVSROOT 路径。

9. 按下确定后就可以登录上CVS服务器了。

10. 接下来就可以从CVS服务器下载代码了,选择Remote菜单的Checkout module项。

11. 之后会出现Checkout settings对话框,在Module name中输入要下载的模块名称(例如plugins),点击下拉框的下拉按钮,选择登录时用的CVSROOT,然后按下确定就可以开始代码下载。代码成功下载后会出现相应模块的文件夹。

12.直接从Remote菜单选择Checkout module选项,出现Checkout settings对话框后,打开CVSROOT向导(点击下拉框右侧的按钮),按下图进行设置:

13. 按下OK后回到Checkout settings对话框,在Module name栏中输入要下载的模块名称,按确定开始代码下载。

14. developer可以修改和上传代码的权限(commit),当下载的代码被修改后,在WinCVS可以看到被修改的文件用红色图标标出。选择Modify菜单的Commit 项可以将选中的文件夹中被修改的代码上传到CVS服务器。

15. 成功上传后可以看到以下提示:

2.2.2Eclipse cvs插件

Eclipse本身内置了CVS支持,不需要使用其他客户端软件,只要建立一个CVS 服务器,就可以使用版本控制系统了。

CVS使用了一个分枝(Branch)模型,以保证不同开发者的相对独立,但是又高度集成。分枝可以看成一个开发团队共享的工作区(Workspace),在CVS数据库中,有一个特殊的分枝称为HEAD,代表主要工作流。

开发者可以提交(Commit)自己的工作,并通过更新(Update)与其他人的最新修改保持同步。提交是把自己的修改提交给数据库,称为输出(Outgoing),更新则是得到其他人的修改,称为输入(Incoming)。每次提交之前,都应该先更新,以保持与最新状态同步。

因此,在Eclipse中使用CVS进行团队开发,理想的开发流程应如下图:

图2:团队开发流程

1.从最新状态开始。开始工作前,要保证所有资源与最新的分枝状态一致。

对于从头开始的新项目,首先要连接服务器,设定存储那些资源文件。对于在服务器数据库中已经有记录的项目,首先要通过更新来保证资源状态最新。如果本地的工作没有需要特别保存的,可以直接把数据库中的最新版本Check Out As Project,或者Replace With,Latest from Repository。

2.进行本地工作,保存修改。

3.同步。当做好提交工作的准备后,要和服务器数据库同步。

1.首先应该更新(Update),检查所有的Incoming改变,输入到本

地,看是否会影响自己的工作,是否会造成冲突,破坏完整性等等。

2.检查完更新后,可以确认自己的工作和最新的Branch内容是一致

的,就可以提交(Commit)自己的修改了,标上适当的注释。

开发流程所用到的主要操作如下:

对于一个新的项目而言,首先需要做的就是设置Eclipse来连接CVS服务器。首次连接将与服务器同步(Synchronize)。

首先在Eclipse的资源视图(Resource Perspective)或者Java视图(Java Perspective)中的项目上点右键,选择Team,Share Project,将出现提示窗口,选择是使用已知的CVS数据库位置还是新建数据库位置。对于第一次连接CVS服务器的情况,将需要首先定义连接所需的服务器参数和路径,用户名,密

相关主题