当前位置:文档之家› 实用CVS安装及使用手册

实用CVS安装及使用手册

实用CVS安装及使用手册
实用CVS安装及使用手册

CVS使用手册

深圳市金证科技股份有限公司版权所有

版权声明

本手册版权为深圳市金证科技股份有限公司公司所有,未经本公司书面许可,任何公司、单位和个人不得以任何手段复制本书的全部或部分内容。

目录

0前言 (4)

0.1 关于本手册 (4)

0.2 名称解释 (4)

0.3 技术支持 (4)

1CVS简介.......................................................................................... 错误!未定义书签。

1.1 CVS的特点 (5)

1.2 CVS工作思路 (5)

2版本管理 (5)

2.1 版本树 (5)

2.2 总体处理流程 (7)

2.3 CVS提交中注释的要求 (10)

3CVS服务器的安装与配置 (11)

3.1 CVS服务器的安装 (11)

3.2 CVS服务器的配置 (11)

4WINDOWS平台下的CVS操作 (12)

4.1 W IN CVS安装 (12)

4.2 W IN CVS登录到CVS服务器 (12)

4.3 W IN CVS基本操作 (15)

4.4 修改登录名密码 (40)

5常用规则 (42)

6关于英语单词代表的意思: (42)

7小小技巧知识 (43)

8需注意的问题 (44)

9未解决的问题 (44)

0 前言

0.1 关于本手册

本手册详细说明了如何使用CVS进行版本控制的有关操作方法,本手册只列出了常用的与开发人员有关的操作。由于时间仓促,加之知识的局限性,尚有不足之处,还请诸位多多赐教。

0.2 名称解释

?配置项:一个信息单元(可以是程序、文档或数据)称为一个配置项(SCI:Software Configuration Item),它是软件配置管理的对象。

?基线(Baseline):指已经通过正式审核和批准的某规约或产品,是后续开发的基础,并且只能在正式的变化控制流程之下做修改。

?版本(Revision):是经过修改过的版本。

?版本号:每个在版本库中维护的每个文件都有自己版本号,版本号可以自己命名或系统自动命名。每个文件在版本系统内的版本都有可能形成一个独立的版本树。

?版本标签:是阶段性的版本标记,即Milestone(里程碑)。根据标签可以获取某个特定的完整版本。

?CVS仓库(Repository):CVS以RCS格式的文件来保存所有配置项,这些文件也按目录组织,最顶层目录称为CVS仓库。

?CVS模块(Module):CVS模块是CVS的项目组织方式,通常和CVS仓库中的目录对应。

?CVS服务器:init进程中services—cvspserver。

?CVS客户:$CVSROOT=:pserver:cvsuser@localhost:/cvswork。

0.3 技术支持

如果您有任何关于本软件的使用或文档方面的问题,请通过电话、Email、MSN 联系如下技术支持人员。亦可进入公司OA系统公司桌面CVS论坛寻求支持信息。

0.4 CVS的特点

CVS即Concurrent V ersions System,意思是并行版本系统。它是一个当前比较流行的功能强大的版本控制系统,采用典型的客户/服务器结构。CVS具有以下几个主要特点:?免费:其官方网站是https://www.doczj.com/doc/8918860063.html,。

?跨平台:CVS支持所有的操作系统和跨平台开发,可以用在AIX、Solaris、SUNOS、Linux、Windows等不同的平台上开发应用。

?强大的分布式开发支持:CVS一直以支持分布式开发作为其基本特征。

?支持并行开发:允许多个开发人员对同一个文件进行开发工作,并对多个开发者的工作进行整合。

?强大的可塑性:不论是一个源文件组成的项目,还是代码量超过几百兆的项目,都能够管理自如。

?触发器及定制功能:这种功能帮助开发者将CVS和变动/跟踪系统紧密集成,以形成完整的软件配置管理系统(SCM)。

?使用简单:C/S 结构,WinCVS

?实现代码持续集成

?得到众多软件商的支持

0.5 CVS工作思路

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

1 版本管理

1.1 版本树

?Beta_1系统开发阶段

在Beta_1系统开发阶段,由配置管理小组建立子项目的目录结构,开发组自主管理子项目中的配置项,在Beta_1系统开发阶段结束后,由开发小组长组织小组内成员进行单元测试,单元测试通过后,由项目经理对子项目打上版本标签,即Beta_1版。开发小组成员不要随意打任何版本标签。

?Beta_2系统开发与Beta_1系统测试阶段

开发组在打上Beta_1版标签的主干版本上继续开发,配置管理小组则在Beta_1版本标签上作一分支版本,交由测试组测试,测试组在分支版本上发现的问题,由开发者在分支版本上修正错误,项目经理审核修正后,把修正后的配置项的标签移到最新的版本号上,然后测试组进行错误修正的回归测试,在回归测试通过后,通知开发人员将修正后的配置项合并到主干版本。在Beta_2系统开发结束后,项目经理组织后期开发内容的单元测试,在单元测试通过且测试组完成Beta_1系统的集成测试后,由项目经理设置Beta_2版标签。Beta_2版本标签设置的同时,配置管理员开始冻结此版本,即对修改进行控制,开发人员不能再进行配置项的出库和入库,对配置项的操作全部由配置管理员来进行。

Beta_2系统测试

测试组申请整个Beta_2版本出库进行集成测试,对于测试中发现的问题,由开发组进行错误修正,项目经理审核修正后,把修正后的配置项的标签移到最新的版本号上,然后测试组进行错误修正的回归测试。在Beta_2版本测试结束后,测试组负责提交总体测试报告,由配置管理委员会决定此版本是否可以投入生产环境。通过后由项目经理打上product版本标签。

1.2 总体处理流程

下面结合CVS在项目组中的使用,规范编码过程中对于版本控制的运用和产品的交付流程。项目组配置管理工具采用CVS(开放源代码、并发版本控制软件流程),BUG跟踪工具使用的是ClearQuest(缺陷跟踪工具)。因为CVS 只是一个开发一级的版本控制工具,没有版本库、开发库、控制库之间的管理。本文提出关于3个库的一种管理办法,用以保证开发库和控制库之间数据的一致性。

充分利用CVS 和ClearQuest 工具的功能,结合项目实际情况,对两个工具进行整合,实现开发、测试、发布的合理化流程,流程图如图2.2.1所示:

图 2.2.1

版本控制是配置管理的基本要求,它可以保证在任何时刻恢复任何一个配置项的任何一个版本。版本控制还记录了每个配置项的发展历史,这样就保证了版本之间的可追踪性,也为查

找错误提供了帮助。版本控制也是支持并行开发的基础。当我们在原来的版本基础上需要创建

另外一个版本(项目)时,可创建一个分支,在分支上开发另外一个版本。

1.2.1 新项目的开发

各产品/项目的项目经理在项目启动时,需要填写《公司配置库权限申请单》,经部门负责人审核、软件中心负责人批准签字后,交公司配置管理员开通公司配置库的使用空间和权限。

增加新功能或修改程序时,可以在开发主线上随时提交修改内容。修改完成,并通过自己的测试(单元测试)之后,如果需要复审员对代码复审,则开发者要建立复审标签,格式为『REX_产品代号_开发者名字+日期(yyyymmdd)+任务单号』。用来区分多个提交的任务,测试完成后提交测试报告。

具体操作:Remote-Create a tag by module / Modify-create a tag

命名为:REX_产品代号_NAME_YYYYMMDD_[N]

其中:REX - 表示代码复审(reexmine)

NAME- 表示开发者名字

YYYYMMDD- 为8位的日期,如20060215

[N]- 任务单编号,通过此编号可以知道此次修改要解决的问题——来自CQ。

发布之前的测试,建立发布测试标签‘REX_产品代号_YYYYMMDD’,在此标签上进行测试,在测试时开发人员可以继续在开发主线上开发新的功能,而不必冻结开发代码。对测试问题修改完善后,再经过测试,直到所有此类问题都解决掉。

具体操作:Remote-Create a tag by module / Modify-create a tag

命名为:REX_产品代号_YYYYMMDD

其中:REX - 表示代码复审

YYYYMMDD- 为8位的日期,如20060215

建立发布标签,即打标签‘REL _产品代号_版本号_YYYYMMDD’。

具体操作:Remote-Create a tag by module / Modify-create a tag

命名为:REL _产品代号_版本号_YYYYMMDD

其中:REL- 表示发布(Release)

YYYYMMDD- 为8位的日期,如20060215

1.2.2 创建分支

当我们在原来的版本基础上需要创建另外一个版本(项目)时,可创建一个分支,分支跟主版本可独立开发,又可以相互合并。如我们的甲项目跟乙项目基本上相同,可直接在甲的基础上创建一个分支。甲上有用的地方直接合并到乙分支上。

具体操作:Remote-create a branch / Modify-create a branch

命名:BR_原产品代号_新产品代号_YYYYMMDD

其中:BR-表示分支

增加新功能或修改程序时,可以在分支上随时提交修改内容。修改完成,并通过自己的测试(单元测试)之后,如果需要复审员对代码复审,则开发者要建立复审标签,格式为『REX_开发者名字+日期(yyyymmdd)+任务单号』。用来区分多个提交的任务,测试完成后提交测试报告。

具体操作:首先update本地为分支版本,然后选中要打标签的文件,执行如下操作:Modify -create a tag

命名为:REX_产品代号_NAME_YYYYMMDD_[N]

其中:REX- 表示代码复审(reexmine)

NAME- 表示开发者名字

YYYYMMDD- 为8位的日期,如20060215

[N]-任务单编号,通过此编号可以知道此次修改要解决的问题——来自CQ。

发布之前的测试,建立发布测试标签‘REX_产品代号_YYYYMMDD’,在此标签上进行测试,在测试时开发人员可以继续在开发主线上开发新的功能,而不必冻结开发代码。对测试问题修改完善后,再经过测试,直到所有此类问题都解决掉。

具体操作:首先update本地为分支版本,然后选中要打标签的文件,执行如下操作:Modify -create a tag

命名为:REX_产品代号_YYYYMMDD

其中:REX - 表示代码复审

YYYYMMDD- 为8位的日期,如20060215

建立发布标签,即打标签‘REL _产品代号_版本号_YYYYMMDD’。

具体操作:首先update本地为分支版本,然后选中要打标签的文件,执行如下操作:Modify -create a tag

命名为:REL _产品代号_版本号_YYYYMMDD

其中:REL- 表示发布(Release)

YYYYMMDD- 为8位的日期,如20060215

1.3 CVS 提交中注释的要求

CVS 在提交代码时需要填写提交的注释,项目组使用统一格式来达到规范的目的。

提交注释的格式——【符号[模块名] 详细注释】

“符号”可以是‘!’、‘~’两个符号之一。表示开发工作的两种状态:完成‘!’和进行中‘~’。

完成-‘!’,表示经过测试完成,可以提交到控制库。

进行中-‘~’,表示正在对问题和功能处理中,此部分提交的内容只是表示开发库的内容,还没有测试完成,不能提交到控制库之中。

‘[模块名]’表示修改的是哪个模块。

‘详细注释’要指出此部分的提交属于哪部分内容:包括:新增加的功能、删除旧的功能、修正错误、计划要完成的功能等等,还要详细说明为什么进行代码的修改,以及进行了什么样的修改。

例如:以下是修改提交注释(注意符号和中括号之间有一空格):

![发行后台] 增加功能,解决打印总是出现乱码问题。修改了打印函数f_print() 第50行的打印语句print。

2 CVS服务器的安装与配置

本章介绍Linux平台下CVS服务器的安装和配置

2.1 CVS服务器的安装

服务器操作系统是linux操作系统,linux操作系统自带有CVS安装。可以使用linux自带的CVS安装,然后下载升级包进行升级。也可以到开源网站https://www.cvshome。org/下载安装包自行安装。

2.2 CVS服务器的配置

1、检查确保系统已安装CVS:

rpm -qa | grep cvs

2、建立CVS用户组:

groupadd cvs

3、创建CVS属主用户

# useradd –g cvs –d /home/cvsroot cvsroot

4、建立CVS仓库(初始化CVS)

# chmod 775 /home/cvsroot

$ cvs -d /home/cvsroot init

5、启动CVS服务器:

首先在/etc/xinet.d目录下新建文件cvspserver,cvspserver的结构如下:

service cvspserver

{

socket_type = stream

wait = no

user = root

server = /usr/bin/cvs

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

log_on_failure + = USERID

only_from = 192.168.0.0/24

}

其中only_from是用来限制访问的,可以根据实际情况不要或者修改。

然后,重新启动xinetd:# /etc/init/xinet.d restart

6、检查cvspserver服务是否启动

netstat -l | grep cvspserver

结果:tcp 0 0 *:cvspserver *:* LISTEN

7、创建用来访问CVS的用户

仓库中CVSROOT目录里可以添加三个配置文件:passwd,readers,writers。可以通过设置这三个文件来配置CVS服务器:

passwd:cvs 用户的用户列表文件,格式如下:

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

加密口令:htpasswd –c filename username

例:lill:kd7MmHzjkp882:cvsroot

readers:有CVS 读权限的用户列表文件,是一个一维列表

writers:有CVS 写权限的用户的列表文件,是一个一维列表

增加用户:

htpasswd –b passwd lill lill //-b 把用户增加在passwd文件下。Lill是用户名,第二个lill是密码。

Vi passwd 进入passwd,点击I

在增加的一行后面添加:cvsroot

默认读写权限,如果读权限,在readers文件中添加此名字即可。

3 Windows平台下的CVS操作

本章介绍Windows下的CVS客户端工具WinCVS的操作。

3.1 WinCVS安装

WinCVS安装包可以到公司网站https://www.doczj.com/doc/8918860063.html,/tools/tools1 下载WinCVS20.rar。

具体安装过程:首先运行wincvs_setup.exe安装WinCVS。在安装过程中,会提示安装cvsnt,安装即可。安装完毕,运行python-2.3.1.msi,直至安装结束。

注意:需在我的电脑中的环境变量中设置python的环境变量;有时还需在防火墙中的“例外”中把CVS相关的程序设为例外;在本地连接中网关设置为:255.255.0.0,而不是255.255.255.0 3.2 WinCVS登录到CVS服务器

在WinCVS安装完成后,运行WinCVS,选择菜单”Admin” ”Login”登陆,如图4.2.1:

图4.2.1

然后进入如下信息:

:pserver:lill@192.168.40.232:/home/cvsroot/test

其中:lill是用户名;

192.168.40.232是服务器IP地址;

/home/cvsroot/test是模块路径。

如图4.2.2所示界面,不同用户需要修改用户名和文件名,替代“lill”和“test”。

用户名是:每个人自己的姓的全拼+名字的每个字的拼音的第一个字母,如李丽丽的用户名称是lill(密码另行通知);

模块名是:所负责产品的代号。

图4.2.2

Globals选项,如图4.2.3所示:

图4.2.3

此项的配置主要是要注意以下两点:

第一,Prune (remove) empty directories选上,会自动删除空目录;建议如果需要保存空目录,在空目录下面存放一个readme.txt文件,防止删除空目录,也可以记录文件信息。

第二,对一般配置没有特殊要求的,把Supply control when adding 选项选中

配置好后点击确定,出现输入密码框,如图4.2.4:

图4.2.4

输入密码后,点击OK登录。登录成功,会在下方的状态视图里显示“CVS exited normally with code 0”,如图4.2.5所示。注意,每次操作的时候状态视图都会有操作结果的显示。操作成功返回代码0,非零的代码说明有错误产生。

图4.2.5

3.3 WinCVS基本操作

3.3.1 建立工作目录

在本地硬盘建一个自己的工作目录(以后检出的工作拷贝就会放到这个目录下),比如D:\test,在WinCVS地址栏中选定该目录(如图4.3.1.1)。

图4.3.1.1

3.3.2 Checkout检出

1、CHECKOUT工程模块,如图4.3.2.1

图4.3.2.1

也可以在左侧树结构处点击右键选择‘Checkout module’,如图4.3.2.2

图4.3.2.2

2、进入配置目录,如图4.3.2.3:

(1)Module name and path on the server:输入要检出的模块名,是所要下载的CVS服务器上文件的目录名;或者点击浏览服务器上的内容,如图图4.3.2.3红色所示,出现如图4.3.2.4,选择list和cvsroot,点击refresh,刷新列表,就是服务器上本模块下的内容.选择一个文件,如a文件,点击OK后就选中了该文件,又回到图4.3.2.3。

(2)图4.3.2.3中,Local folder to checkout to:本地路径,下载的文件所放的本地路径(例子中是E:\checkout\);

(3)图4.3.2.3中,CVSROOT:选择CVSROOT路径

(4)点击确定,即可将a模块检出到本地硬盘。

图4.3.2.3

图4.3.2.4

3、确定后,CHECKOUT成功会有如下提示,如图4.3.2.5所示。

图4.3.2.5 CHECKOUT 成功以后的本地目录内容,如图4.3.2.6:

图4.3.2.6

3.3.3 Import上传

1、import工程模块,如图3.3.3.1

图3.3.3.1

也可以在左侧树结构处点击右键选择‘Import module’,如图3.3.3.2

图3.3.3.2

2、进入配置目录,如图3.3.3.3:

(1)Repository:输入文件名,是上传到CVS服务器后该文件的名称,例子中是test;

(2)CVSROOT:选择CVSROOT路径

(3)在图中箭头所指处填入上传信息,即日志文件。

图3.3.3.3

3、如果要求上传后文件日期不变,需要选择import options框的选项,如图3.3.3.4红色所示。否则,文件日期是你上传时候的服务器日期。

图3.3.3.4

4、确定后出现如图图3.3.3.5所示。

注意:这里是查看上传文件的格式是以二进制(binary)还是文本文件上传。对于能用文本文件打开的文件,最好选择文本(text)上传,这样有利于文件比较。对于不能用文本文件打开的文件,需要选择二进制(binary),否则下载下来文件可能打不开或者有问题不能使用。

如果查看文件类型不正确,比如:.rar文件的上传类型(Entry kind)是txt,那就不正确,需要修改。选择

.r ar那行,点击左下角的Edit,选择二进制(Force binary),确定即可。

图3.3.3.5

4、确定后,Import成功会有如下提示,如图3.3.3.6所示。

图3.3.3.6

注意:成功后,要删除本地目录,重新从仓库中Check Out出来,才可以进行下一步动作。

3.3.4 Update得到最新版本

Update得到最新版本,是将服务端文件更新到本地

在对本地的文件修改前,最好先从服务端更新文件,因为多人操作同一个文件时,没有及时更新容易引起冲突。如甲乙检出的版本同为1.2,修改提交后的版本为1.3,乙此时没有更新,在本地1.2的基础上修改提交,此时就会产生冲突。

更新文件,点击选中文件(可多选),从右键菜单中选择"update… ",如图4.3.4.1,出现如图4.3.4.2,选择两个控制项,确定即可。

相关主题
文本预览
相关文档 最新文档