收藏 分销(赏)

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

上传人:可**** 文档编号:5018498 上传时间:2024-10-22 格式:DOC 页数:44 大小:1.73MB 下载积分:8 金币
下载 相关 举报
实用CVS安装及使用手册.doc_第1页
第1页 / 共44页
实用CVS安装及使用手册.doc_第2页
第2页 / 共44页


点击查看更多>>
资源描述
CVS使用手册 深圳市金证科技股份有限公司 版权所有 版 权 声 明 本手册版权为深圳市金证科技股份有限公司公司所有,未经本公司书面许可,任何公司、单位和个人不得以任何手段复制本书的全部或部分内容. 目 录 0前言4 0。1关于本手册4 0.2名称解释4 0。3技术支持4 1CVS简介5 1。1CVS的特点5 1.2CVS工作思路5 2版本管理5 2。1版本树5 2.2总体处理流程7 2。3CVS 提交中注释的要求10 3CVS服务器的安装与配置11 3。1CVS服务器的安装11 3.2CVS服务器的配置11 4WINDOWS平台下的CVS操作12 4。1WinCVS安装12 4.2WinCVS登录到CVS服务器13 4。3WinCVS基本操作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论坛寻求支持信息。 技术支持人员 电话 Email MSN 赵玉露 0755-8295 5896 zhaoyl@szkingdom。com jade_dew2008@hotmail。com 0.4 CVS的特点 CVS即Concurrent Versions System,意思是并行版本系统.它是一个当前比较流行的功能强大的版本控制系统,采用典型的客户/服务器结构。CVS具有以下几个主要特点: § 免费:其官方网站是http://www。cvshome。org。 § 跨平台: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安装包可以到公司网站http://mail。szkingdom。com/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,那就不正确,需要修改.选择.rar那行,点击左下角的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,选择两个控制项,确定即可. 如图4。3。4。1 图4。3。4.2 注意: (1)第一个是Get the clean copy,大家一定要慎重使用这个复选框,它的含义是从服务器上得到完全的拷贝,并且覆盖本地的同名文件,如果选择了这一项,那么本地上你所做的全部工作都将丢失,因此在实际工作中该项一般是不选的,一旦误操作那么所有的工作都将全部丢失. (2)Create missing directories that exists in the repositories,它的含义是如果服务器上含有你本地没有的文件夹,WinCvs会自动在你本地创建该文件夹,否则不会在本地创建该文件夹,那么你本地的文件就会比服务器上少,所以一般这个选项需要选上,除非你能保证同一个开发小组的其他人员没有创建新的文件夹。 (3)Checkout 与 Update的区别:Checkout是把CVS服务器上的module下载到本地进行工作。该操作一般只在项目开发的最初进行一次. Update主要同步本地文件(目录)和CVS服务器库中相应文件(目录)之间的差异,使本地相应文件是最新版本,另外Update也能执行获取文件旧版本的操作。 如果需要提取项目的某个版本的文件。则点击update后做如图4.3。4。2的选择,然后再作如图4。3。4。3的选择.By revision/tag/branch 处选择标签或者分支名称.  图 4。3.4。3 如果要查看某个日期之前的文件,则点击update后做如图4。3。4.2的选择, 然后选择By date,如图4。3。4。4 图4。3。4.4 查看了某个版本或者某个日期的项目之后,现需要提取当前服务器上最新的文件,除了做4。3。4.2的选择外,还要做如图4。3。4。5的选择.这样就可以提取当前服务器上最新的文件. 图 4.3。4.5 执行上述操作之后,当前拷贝中的文件与仓库中的文件内容完全一致。特别需要注意的是,如果某个文件在仓库中已经被删除,那么更新之后,工作拷贝中的该文件也被删除了。CVS这样做是为了让工作拷贝与仓库完全一致。 3.3.5 Commit提交修改内容 从服务端checkout项目后,会在本地建立文件的拷贝,在客户端修改后提交(commit)到服务端即可将最新的文件保存到服务端。如图4。3。5.1,修改后的文件显示为红色。此时的修改只修改了本地的文件。 图4.3.5。1 如果要提交到服务器端,点击选中被修改过的文件,从右键菜单中选择”commit …"命令,出现图4。3。5.3,在箭头所指的框内填入修改信息,即log日志,点击确定即可提交到服务器。 图4。3。5。2 图4.3。5.3 提交到服务器后,文件版本会自动加1。如图4。3。5。4 图4.3.5。4 如果修改了不同文件夹中的几个文件,现想查看修改的所有文件,则选中根目录,点击两个按钮,如图4.3。5.5红色所示,有侧区域即显示所有修改的文件。 图4。3.5。5 如果需要一次性提交,则选中根目录,右键commit,如图4.3。5。6,然后出现图4.3。5。3所示的界面,填入log信息,提交即可。 图4。3。5。6 3.3.6 Add 添加文件 在本地添加文件后提交到服务端,先选中文件,然后点击“添加按钮”,注意此时有两个按钮,一个添加一般的文件;一个添加二进制文件。如图4。3。6。1红线所示。添加文件后,文件图标会变成红色,表示确认添加,但是还没有添加到服务器上,需要右键菜单中提交命令“commit …”才真正提交到服务器上,如图4。3。6.2。 图4。3.6.1 图4.3。6。2 3.3.7 Remove,Erase移除文件 Erase:只是在本地删除,不影响服务器。 点击erase,如图4。3。7.1,然后弹出询问框,是否确认删除,如图4。3。7.2,点击OK即可。 图4.3。7。1 图4.3.7。2 Remove:选择文件后,点击remove,如图4。3。7.3,将文件从本地删除,图标变成红色的.然后选择刚刚的文件,从右键菜单中选择“commite…"命令,如图4.3。7。4,才将服务端的文件删除. 图4。3.7.3 图4。3.7.4 3.3.8 删除文件夹 要删除文件夹,需要首先把文件夹下面的文件利用remove删除掉,详见4。3。7小节。然后选择本地目录的根目录,点击右键选择update,在globals中把prune empty directories打勾选择上.确定提交即可.如图4.8.1所示. 图4。3。8。1 3.3.9 找回被删除的文件 Erase: Erase操作只删除本地文件,不影响服务器上的文件。所以如果使用Erase操作删除了该文件,则点击根目录,右键update即可 Update后出现如图4。3。9。1对话框,选择两个控制项,确定即可。 图4。3。9。1 Remove: 如果只是点击remove(这是remove后的文件)删除文件,没有commit,则点击Add添加按钮即可将文件找回;或者『ctrl+L』直接输入命令:cvs add *** 如果执行了remove后,又执行了commit,这时文件已经从服务端删除,如果要找回被删除文件,则需要执行如下操作: 1、 只能用『ctrl+L』,直接输入命令:cvs add ***,如图4。3。9.2所示,确定后会得到一个空文件,如图4。3。9。3。 图4.3.9。2 图4.3。9.3 2、选中这个空文件,执行update操作,得到这个文件实体。 3、再次选中这个文件,执行commit操作,得到这个文件的最新版本(在原来被删除版本的基础升级一个版本)。文件的历史版本仍然存在。如图4.3。9.4。 图4。3.9。4 3.3.10 避免冲突 CVS的无限制的版本管理检出的模式,就是检出一个文件并不给定开发者对那个文件的排它权,其它的开发者也可以对其检出,进行他们自已的修改,并且将其登记回去. 你可能会问:“后面的登记不是会覆盖前面的吗?”回答是不会的。会自动合并那些改变,但是,如果前后两人修改了相同的地方,可能引起冲突,CVS把冲突段保留,由用户手工解决. Commit时报‘Update—to—date check failed ',说明有冲突 尽量避免的办法就是: 1、COMMIT前先UPDATE 2、修改别人的文件前最好先通知对方 3.3.11 查看文件状态 在“Query”菜单下有Diff、Log、Status、Graph等操作,如图4.3.9。1 1、 Diff:是将本地拷贝与对应目录或文件任一版本进行比较; 2、 Log:显示指定文件的所有修订版本的日志信息、日期、标记与作者等; 3、 Status:显示指定文件的状态,如文件是本地以及库中的版本号等; 总共可能有四种状态: (1)Up—to-date:表明你要到的文件是最新的. (2)Locally Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新.  (3)Needs Patch:表明有个哥们已经修改过该文件并且已经提交了!你的版本比仓库里的旧. (4)Needs Merge:表明你曾经修改过该文件,但是偏偏有个不识相的也修改了这个文件,而且还提交给仓库了! 4、 Graph:显示指定文件的修改状态,如文件是本地修改还是库中修改,还显示修订版号。本地修订本标记为文档图标(红色的矩形框)。在此,你可以选择两个修订版本比较(diff),用shift键,(注意:图形中红色的虚线框表示已经删除了的版本) 图4.3。9。1 命令:cvs diff Unit1。pas 在状态窗口中会输出比较结果. Index: add。txt ============================================================ RCS file: /home/cvsroot/test/a/ni/add。txt,v retrieving revision 1.1 diff —r1。1 add。txt 0a1 > aaaaaaaaa \ No newline at end of file 注意这里输出结果是UNIX的diff命令的输出格式。其中0a1表示在原来的版本的第一行后面添加(a-add)了内容,这个添加的内容在新版本里的第二行。输出中,以“〈”开头的行是原有版本的内容,而以“〉”开头的行是新版本的内容,“-—-”表示在两个版本之间的界限。 命令:cvs log filename 查看某文件的日志 5、 Annotate:show the history of each line of a file with cvs annotate(注释) 3.3.12 增加文件和目录 当你创建了想要放到库中的文件时,你要告诉CVS要做相应处理。如果目录包含不在CVS控件制下的文件,你需要增加目录。增加文件或目录,要: 1、 选择你要增加的目录或文件 2、 选择Modify—〉Add或Add binary菜单,对于非文本文档,选择二进制,免得文件会补CVS破坏掉 3、 文件只是被标记为添加,你要通过交(commit)将其增加到库. 如果你要增加一个目录层,而不是几个文件,上面的技术有点麻烦,加上CVS操作不支持增加子目录.在这种情况下,你要使用Import,就像创建新模块。 1、 选择Create—〉Import module菜单. 2、 在弹出的文件对话框中,选择你要增加的目录,并使这个文件夹打开。 3、 WinCvs然后试图辨别目录树中的任何二进制文件.如果弹出了筛选窗口,确保提及的文件被正确地设置了文本或二进制。 4、 在Import settings输入设置对话框,输入模块名。 5、 在Wendor tag厂商标记栏输入你的名字或公司的名字(没有空格)。 6、 在Release  tag发行版本标记栏输入相关名称。 7、 点击“确定”。 WinCvs然后将整个目录结构输入到CVS服务器中。注意在输入操作中对你的本地文件没有任何改变.也就是说,在输入后,你的本地拷贝没有置于版本控制下。在对你的版本控制源文件工作前,你需要做: 1、 移走你的原始目录. 2、 在WinCvs中,再Check Out出来即可. 这样,WinCvs就提供了最新置于版本控制下的目录层。 3.3.13 对文件和目录移动或改名 对文件和目录移动或改名的操作在CVS中是不允许的.这是CVS的一个不中之处。你需要合并删除和增加操作来模拟移动或改名。参见增加文件和目录以及删除文件夹。 注:在实际操作中,用户可以直接到CVS服务器上,在库目录下,直接对相应的文件作相应移动和改名操作。新文件名要符合CVS库文件的命名规则.一般情况下,不建议用户直接到CVS服务器上直接修改。修改时,注意文件的属主和存取权限. 具体操作如下:改文件的名字后的操作:cvs中原来那个文件还在,彻底删除,先remove再commit,而改过的新文件需先add再commit。 3.3.14 创建标签 v tag:顾名思义就是做个标签,如张三的文件,他就可以做个标签为”张三”以表明是他的文件。Tag只是在文件上做了一个标签,并没有创建不同的文件,这一点跟branch不同。tag是标志用户特定信息的。 创建标签,如图4。3。10。1,选择Create a tag by module,进入图4。3.10。2,填写tag名字,模块名和CVSROOT路径,确定即可。 图4。3.10.1 图4.3.10.2 注意:CVS对有版本标签(分支标签不同)的文件不能进行提交.CVS不允许在已经基线化的版本上进行任何修改,只能在主版本,或分支版本上进行修改. 3.3.15 创建分支 Branch:分支是个很有用的概念,当我们在原来的版本基础上需要创建另外一个版本(项目)时,可创建一个分支,分支跟主版本可独立开发,又可以相互合并。如我们的甲项目跟乙项目基本上相同,可直接在甲的基础上创建一个分支v_ds。甲上有用的地方直接合并到乙分支上。 一般是有个发布版v1.0,在开发v1。2的基础上,同时又在修改v1。0,这时就可以创建分支。 创建分支,和创建标签类似,如图4。3.10。3,选择Create a branch,进入图4。3。10。4,填写branch名字,模块名和CVSROOT路径,确定即可。 图4。3.10.3 图4。3.10。4 要检出特定标签或分支的文件版本,可以右键选中文件夹(或文件),右键点击后选择"Update selection”. 选中“Creating missing directories that exist in the repository",切换到“Update options”选项卡,在“By Retrieve rev。/tag/branch”中填入要切换到的分支名,确定即可。如图4。3。10。5所示: 图4。3.10。5 如果需要停止在分支上的工作,返回主版本。首先保证分支版本已经完全更新到仓库中。然后需要删除sticky标签并更新本地拷贝为主版本的工作拷贝。选择相应的目录或文件,右键点击后选择“Upda
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服