资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
CVS 的的 认认 识识 与与 配配 置置内容摘要内容摘要 CVS 是基于 C/S 结构的系统,由一个中心版本控制系统记录文件版本,从而实现很多人同时开发一个项目的时候能够实现文件版本同步。CVS 的全称是 Current Version Control 即版本控制工具,它是一种广泛应用的、开源的、透明于网 络的版本控制系统,用户可以通过 CVS 来实现项目的共享,运用 CVS 命令,来实现对 CVS 的控制,对项目的控制。关键词关键词 版本控制工具,BUG,功能,术语命令,模块,安装1.11.1 章章 CVSCVS 的的 引引 入入1.1.11.1.1 CVSCVS 是什么是什么CVS 的全称是 Current Version Control 即版本控制工具,它是一种广泛应用的、 开源的、透明于网络的版本控制系统。用户使用 CVS 时,首先要架设一台 CVS 服务器, 在 CVS 服务器上导入项目实例、设置 CVS 项目访问控制等。而客户则通过客户端来访 问 CVS 服务器,客户可以取得项目最新代码副本,提交自己修改的代码等,而客户可 以从 Internet、LAN 甚至本机来访问 CVS 服务器。1.1.21.1.2 CVSCVS 的工作的工作CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许 多不同项目的源程序由仓库管理员统一管理这些源程序这样,就好象只有一个人 在修改文件一样避免了冲突每个用户在使用仓库之前,首先要把仓库里的项目文 件下载到本地用户做的任何修改首先都是在本地进行,然后用 cvs 命令进行提交, 由 cvs 仓库管理员统一修改这样就可以做到跟踪文件变化,冲突控制等等 1.1.CVSCVS 引入的原因引入的原因 在安装 cvs 的过程中,我们时常会问为什么要使用 CVS?如果没有 cvs 的协助, 在开发中我们经常会遇到下面的一些问题: (一)代码管理混乱。如果是别人添加或删除一个文件,你很难发现。没有办法 对文件代码的修改追查跟踪。甚至出现文件丢失,或新版本代码被同伴无意覆 盖等现象。 (二)解决代码冲突困难。当大家同时修改一个公共文件时,解决代码冲突是一 件很头疼的事。最原始的办法是手工打开冲突文件,逐行比较,再手工粘贴复 制。更高级的做法是使用文件比较工具,但仍省不了繁杂的手工操作,一不小 心,甚至会引入新的 bug。 (三)在代码整合期间引入深层 BUG。例如开发者 A 写了一个公共函数,B 觉得 正好可以复用;后来 A 又对这个公共函数进行了修改,添加了新的逻辑,而这 个改动的却是 B 不想要的。或者是 A 发现这个公共函数不够用,又新做了一个计算机学院学年论文-CVS 的认识与配置2函数,B 却没有及时获得通知。这些,都为深层 BUG 留下隐患。 (四)无法对代码的拥有者进行权限控制。代码完全暴露在所有的开发者面前, 任何人都可以随意进行增、删、改操作,无法指定明确的人对代码进行负责。 特别是产品的开发,这是极其危险的。 (五)项目不同版本发布困难。特别是对产品的开发,你会频繁的进行版本发布, 这时如果没有一个有效的管理产品版本的工具,一切将变得非常艰难。 这些问题对于一个团队来说,更是首要解决的问题,由此可以看出,版本控制工具 的使用非常重要。 2.2.CVSCVS 的功能介绍的功能介绍 (一)代码统一管理,保存所有代码文件更改的历史记录。对代码进行集中统一 管理,可以方便查看新增或删除的文件,能够跟踪所有代码改动痕迹。可以随 意恢复到以前任意一个历史版本。并避免了因为版本不同引入的深层 BUG。 (二)完善的冲突解决方案,可以方便的解决文件冲突问题,而不需要借助其它 的文件比较工具和手工的粘贴复制。 (三)代码权限的管理。可以为不同的用户设置不同的权限。可以设置访问用户 的密码、只读、修改等权限,而且通过 CVS ROOT 目录下的脚本,提供了相应 功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。(四)支持方便的版本发布和分支功能。 3.3. CVSCVS 术语术语 (一)Repository-仓库: CVS 服务器的根目录。模块(Module)的集合。 (二)Module-模块:,CVS 服务器根目录下的第一级子目录。通常用于存放 一个项目的所有文件。 (三)Checkout-检出: 通常指将仓库中的一整个模块首次导出到本地。 (四)Import-导入:通常指通过提交整个目录结构并创建一个新的模块。 (五)Release-发行版本:整个产品的版本。 (六)Revision-修订版:单个文件的版本。 (七)Tag-标签:在一个开发的特定期对一个文件集给定的符号名。 (八)Update-更新:从模块中下载其他人的修改过的文件,更新本地的拷贝。(九)Commit-提交:将自己修改过的文件提交到模块中。1.21.2 章章 CVSCVS 常常 用用 的的 命命 令令命令格式说明:基本格式以蓝色字体标明,蓝色的 option 为可选项,必选的选项 以橙色、重要的选项以红色标示,请注意。 1.2.11.2.1 importimport 导入源码导入源码 命令格式 import m message repository vendortag releasetag . 导入源码到 CVS 上,用来新建一个项目或大批量更新代码。 命令格式中后三个选项是必须的。repository 指定需导入的目录名称,vendortag 指定分支标记,releasetag 用来区分每次导入的唯一。 如果我们用命令行 import 的话一定要记得用-W 这是一个比较重要的 option, 他会令 cvs 对 import 的程序包进行过滤,如果有不同的类型同时存在,它会以不 同的方式来处理,所以每一种格式都要指定-W,这点必不可少。不过一般来说我们用计算机学院学年论文-CVS 的认识与配置3WINCVS 里的 import 选项就可以了,它会自动针对不同类型做不同动作,在做了 IMPORT 之后我们可以看它生成的命令行. 1.2.21.2.2 checkoutcheckout 检出模块检出模块 命令格式 checkout r tag D date j x j y modules 不指定任何选项时,checkout 检出仓库中模块的最新版本。 主要选项常用到的就是-r,它是用来指定 tag 的,比如技术支持每次要取的发布版 本就是通过指定 tag 检出的。当然也可以按日期来检出,用-D 选项。 另外两个比较重要的是-A 和 -j 。 -A 是完成清除 stick tag 的,检出不带任何 sticky tag 的模块当然是令人比较省 心的。 -j (jion) 合并修订版间的修改到工作目录, 两个-j 选项:checkout j x j y filename 与 update j x j y filename 接近,都是将两个版本号的前一个合并到后一个,通常 x 是大于 y 的,换种说法就是 将文件恢复到某一个旧的版本。当然,版本号取的仍然是新的。当 x 小于 y 时,就是 把 x 合并到 y。 一个-j 选项:合并指定版本到最初的版本 or 合并分支到主干。 1.2.31.2.3 updateupdate 更新工作列表更新工作列表 命令格式 update p r A C j x j y filesname update 使本地工作目录与仓库的更新同步。他令仓库里面的修改合并到本地目录, 这样可以为多人同时开发提供了减少冲突的可能。 选项说明: -A 清除 sticky tag -A 选项将把本地的改变合并进树干顶部的文件,并且忽 略中间的任何粘性标签、设置日期或选项。使用此选项同客户端 update settings 里 的 Reset any sticky date/tag/k options -p 清除空目录 同客户端 Globles 里面的 prune empty dirctories r 更新到版本 tag 同客户端 update options 里的 retrieve rev./tag/branch C 放弃修改,将服务器版本覆盖本地副本。 j 跟 checkout 的-j 选项相似,区别就在于 update 可以对单独的文件进行合并, 而 checkout 最小单位必须是目录 -j x j y 在客户端的 merge option 里面选择 plus with this rev./tag 可选填 X 和 Y。 一个-j 选项则合并指定版本到最初的版本 or 合并分支到主干。 1.2.41.2.4 commitcommit 提交修改提交修改 命令格式 commit l R r f filesname 把修改提交到仓库。为避免提交时产生冲突,commit 之间最好先做 update。Update 会把更新合并到本地,给解决冲突提供了机会。 选项说明: -l 仅在当前目录运行 R 递归操作 r 提交到某一版本,些版本必须是分支或 主干上的最新版 f 强制提交;单独使用时与-R 相抵制,禁止递归操作。 Commit 本身不是可递归的,如果对顶级目录进行了 commit,只能提交当层目录中 的文件,并不影响子目录。如果需要提交整个模块,需要选定 commit option 里面的 Force recurse 令提交操作可以递归,些操作与使用-R 选项相同。 如果想要强制递归提交可同时选用-R 与 f 1.2.51.2.5 tagtag 与与 rtagrtag 本地标记与仓库标记本地标记与仓库标记计算机学院学年论文-CVS 的认识与配置4tagtag 命令格式 tag b c D d l R r filesname 给文件打标签,它作用于本地工作目录 选项说明 -b 建立分支-c 检测未提交的文件 D 给 date 的修订版打标签 d 删除 标签 R 递归执行 r 给己经打好的 tag 打标签,即标记重命名,不删除原 标记。 l 当前目录运行 1.2.61.2.6 diffdiff 比较两不同版本之间的区别比较两不同版本之间的区别 命令格式 diff l R D r filesname 无选项时默认为本地文件当前版本与服务器版本比较 选项说明: -l 当前目录运行 R 递归操作 D 指定日期比较 r 指定标记版本比较。 对于 date 与 tag 之间的影响关系尚需进一步验证 1.2.71.2.7 loglog查看日志信息查看日志信息 命令格式 log l h t d b N R r s w filesname 显示日志信息 选项说明: l 只在当前工作目录运行(默认递归) h 只显示 RCS 文件名 t 同 -h,外加说明文字d 显示版本提交的日期,分号隔开列表 b 显示默认分支上的版本信息,通常是主干最新 N 不显示文件的标签列表R 只显示RCS 文件的名字 r 显示由逗号分隔的 revisions 列表指定范围内的版本 s 显示匹配状态列表的修订版w 显示列表指定用户提交的修订版 1.2.81.2.8 releaserelease 断开文件断开文件/ /目录与目录与 CVSCVS 的关联的关联 命令格式 release d directories -d 如果成功,删除工作目录中文件的副本 releaserelease 命令递归地删除所有的目录和文件,如果有未添加到工作目录的文件,将 无提示地被删除,除非你想彻底删除本地文件,否则不建议使用! 1.2.91.2.9
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号