




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CVS 使用手册使用手册 深圳市金证科技股份有限公司 版权所有 CVS 使用手册 第 2 页 共 45 页 版 权 声 明 本手册版权为深圳市金证科技股份有限公司公司所有 未经本公 司书面许可 任何公司 单位和个人不得以任何手段复制本书的全部 或部分内容 CVS 使用手册 第 3 页 共 45 页 目目 录录 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 CVS 使用手册 第 4 页 共 45 页 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 co m jade dew2008 hotmail com CVS 使用手册 第 5 页 共 45 页 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 版本树版本树 CVS 使用手册 第 6 页 共 45 页 源程序库 Initial 1 0 0 2 0 0 3 0 0 Bug Fix Beta 1 版 Beta 2 版 product 版 Branch 1 0 0 Bug Fix merge Tag Move Tag Move Bug Fix Tag Update build build 产品包 补丁包 Beta 1 系统开发阶段 在 Beta 1 系统开发阶段 由配置管理小组建立子项目的目录结构 开发组自主管理子项 目中的配置项 在 Beta 1 系统开发阶段结束后 由开发小组长组织小组内成员进行单元测试 单元测试通过后 由项目经理对子项目打上版本标签 即 Beta 1 版 开发小组成员不要随意 打任何版本标签 Beta 2 系统开发与 Beta 1 系统测试阶段 开发组在打上 Beta 1 版标签的主干版本上继续开发 配置管理小组则在 Beta 1 版本标签 上作一分支版本 交由测试组测试 测试组在分支版本上发现的问题 由开发者在分支版本上 修正错误 项目经理审核修正后 把修正后的配置项的标签移到最新的版本号上 然后测试组 进行错误修正的回归测试 在回归测试通过后 通知开发人员将修正后的配置项合并到主干版 本 在 Beta 2 系统开发结束后 项目经理组织后期开发内容的单元测试 在单元测试通过且 测试组完成 Beta 1 系统的集成测试后 由项目经理设置 Beta 2 版标签 Beta 2 版本标签设置 的同时 配置管理员开始冻结此版本 即对修改进行控制 开发人员不能再进行配置项的出库 和入库 对配置项的操作全部由配置管理员来进行 CVS 使用手册 第 7 页 共 45 页 Beta 2 系统测试 测试组申请整个 Beta 2 版本出库进行集成测试 对于测试中发现的问题 由开发组进行 错误修正 项目经理审核修正后 把修正后的配置项的标签移到最新的版本号上 然后测试组 进行错误修正的回归测试 在 Beta 2 版本测试结束后 测试组负责提交总体测试报告 由配 置管理委员会决定此版本是否可以投入生产环境 通过后由项目经理打上 product 版本标签 1 2 总体处理流程总体处理流程 下面结合 CVS 在项目组中的使用 规范编码过程中对于版本控制的运用和产品的交付流 程 项目组配置管理工具采用 CVS 开放源代码 并发版本控制软件流程 BUG 跟踪工具使用 的是 ClearQuest 缺陷跟踪工具 因为 CVS 只是一个开发一级的版本控制工具 没有版本库 开发库 控制库之间的管理 本文提出关于 3 个库的一种管理办法 用以保证开发库和控制库 之间数据的一致性 充分利用 CVS 和 ClearQuest 工具的功能 结合项目实际情况 对两个工具进行整合 实 现开发 测试 发布的合理化流程 流程图如图 2 2 1 所示 CVS 使用手册 第 8 页 共 45 页 图 2 2 1 版本控制是配置管理的基本要求 它可以保证在任何时刻恢复任何一个配置项的任何一个 版本 版本控制还记录了每个配置项的发展历史 这样就保证了版本之间的可追踪性 也为查 找错误提供了帮助 版本控制也是支持并行开发的基础 当我们在原来的版本基础上需要创建 CVS 使用手册 第 9 页 共 45 页 另外一个版本 项目 时 可创建一个分支 在分支上开发另外一个版本 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 表示分支 CVS 使用手册 第 10 页 共 45 页 增加新功能或修改程序时 可以在分支上随时提交修改内容 修改完成 并通过自己的测 试 单元测试 之后 如果需要复审员对代码复审 则开发者要建立复审标签 格式为 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 在提交代码时需要填写提交的注释 项目组使用统一格式来达到规范的目的 提交注释的格式提交注释的格式 符号符号 模块名模块名 详细注释详细注释 符号符号 可以是 两个符号之一 表示开发工作的两种状态 完成 和进 行中 完成完成 表示经过测试完成 可以提交到控制库 进行中进行中 表示正在对问题和功能处理中 此部分提交的内容只是表示开发库的内容 还没有测试完成 不能提交到控制库之中 CVS 使用手册 第 11 页 共 45 页 模块名模块名 表示修改的是哪个模块 详细注释详细注释 要指出此部分的提交属于哪部分内容 包括 新增加的功能 删除旧的功能 修正错误 计划要完成的功能等等 还要详细说明为什么进行代码的修改 以及进行了什么样 的修改 例如 以下是修改提交注释 注意符号和中括号之间有一空格 发行后台 增加功能 解决打印总是出现乱码问题 修改了打印函数 f print 第 50 行的 打印语句 print 2CVS 服务器的安装与配置服务器的安装与配置 本章介绍 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 CVS 使用手册 第 12 页 共 45 页 其中 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 文件中添加此名字即可 3Windows 平台下的平台下的 CVS 操作操作 本章介绍 Windows 下的 CVS 客户端工具 WinCVS 的操作 3 1 WinCVS 安装安装 WinCVS 安装包可以到公司网站 下载 WinCVS20 rar 具体安装过程 首先运行 wincvs setup exe 安装 WinCVS 在安装过程中 会提示安装 cvsnt 安装即可 安装完毕 运行 python 2 3 1 msi 直至安装结束 注意 需在我的电脑中的环境变量中设置注意 需在我的电脑中的环境变量中设置 python 的环境变量 有时还需在防火墙中的的环境变量 有时还需在防火墙中的 例外例外 中把中把 CVS 相关的程序设为例外 在本地连接中网关设置为 相关的程序设为例外 在本地连接中网关设置为 255 255 0 0 而不是 而不是 255 255 255 0 CVS 使用手册 第 13 页 共 45 页 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 CVS 使用手册 第 14 页 共 45 页 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 非零的代码说明有错误产生 CVS 使用手册 第 15 页 共 45 页 图 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 CVS 使用手册 第 16 页 共 45 页 图 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 CVS 使用手册 第 17 页 共 45 页 图 4 3 2 4 3 确定后 CHECKOUT 成功会有如下提示 如图 4 3 2 5 所示 图 4 3 2 5 CHECKOUT 成功以后的本地目录内容 如图 4 3 2 6 CVS 使用手册 第 18 页 共 45 页 图 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 在图中箭头所指处填入上传信息 即日志文件 CVS 使用手册 第 19 页 共 45 页 图 3 3 3 3 3 如果要求上传后文件日期不变 需要选择 import options 框的选项 如图 3 3 3 4 红色所 示 否则 文件日期是你上传时候的服务器日期 图 3 3 3 4 4 确定后出现如图图 3 3 3 5 所示 注意 这里是查看上传文件的格式是以二进制 binary 还是文本文件上传 对于能用文 本文件打开的文件 最好选择文本 text 上传 这样有利于文件比较 对于不能用文本 文件打开的文件 需要选择二进制 binary 否则下载下来文件可能打不开或者有问题不 能使用 CVS 使用手册 第 20 页 共 45 页 如果查看文件类型不正确 比如 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 选择两个控制项 确定即可 CVS 使用手册 第 21 页 共 45 页 如图 4 3 4 1 图 4 3 4 2 注意 注意 1 第一个是 第一个是 Get the clean copy 大家一定要慎重使用这个复选框 它的含义是从服务 大家一定要慎重使用这个复选框 它的含义是从服务 器上得到完全的拷贝 并且覆盖本地的同名文件 如果选择了这一项 那么本地上你所做的全器上得到完全的拷贝 并且覆盖本地的同名文件 如果选择了这一项 那么本地上你所做的全 部工作都将丢失 因此在实际工作中该项一般是不选的 一旦误操作那么所有的工作都将全部部工作都将丢失 因此在实际工作中该项一般是不选的 一旦误操作那么所有的工作都将全部 丢失 丢失 CVS 使用手册 第 22 页 共 45 页 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 CVS 使用手册 第 23 页 共 45 页 图 4 3 4 4 查看了某个版本或者某个日期的项目之后 现需要提取当前服务器上最新的文件 除了做 4 3 4 2 的选择外 还要做如图 4 3 4 5 的选择 这样就可以提取当前服务器上最新的文件 图 4 3 4 5 执行上述操作之后 当前拷贝中的文件与仓库中的文件内容完全一致 特别需要注意的是 如果某个文件在仓库中已经被删除 那么更新之后 工作拷贝中的该文件也被删除了 CVS 这 样做是为了让工作拷贝与仓库完全一致 CVS 使用手册 第 24 页 共 45 页 3 3 5 Commit 提交修改内容提交修改内容 从服务端 checkout 项目后 会在本地建立文件的拷贝 在客户端修改后提交 commit 到 服务端即可将最新的文件保存到服务端 如图 4 3 5 1 修改后的文件显示为红色 此时的修改 只修改了本地的文件 图 4 3 5 1 如果要提交到服务器端 点击选中被修改过的文件 从右键菜单中选择 commit 命令 出现图 4 3 5 3 在箭头所指的框内填入修改信息 即 log 日志 点击确定即可提交到服务器 图 4 3 5 2 CVS 使用手册 第 25 页 共 45 页 图 4 3 5 3 提交到服务器后 文件版本会自动加 1 如图 4 3 5 4 图 4 3 5 4 如果修改了不同文件夹中的几个文件 现想查看修改的所有文件 则选中根目录 点击两 个按钮 如图 4 3 5 5 红色所示 有侧区域即显示所有修改的文件 CVS 使用手册 第 26 页 共 45 页 图 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 CVS 使用手册 第 27 页 共 45 页 图 4 3 6 1 图 4 3 6 2 3 3 7 Remove Erase 移除文件移除文件 Erase 只是在本地删除 不影响服务器 点击 erase 如图 4 3 7 1 然后弹出询问框 是否确认删除 如图 4 3 7 2 点击 OK 即可 CVS 使用手册 第 28 页 共 45 页 图 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 所示 CVS 使用手册 第 29 页 共 45 页 图 4 3 8 1 3 3 9 找回被删除的文件找回被删除的文件 Erase Erase 操作只删除本地文件 不影响服务器上的文件 所以如果使用 Erase 操作删除了该文 件 则点击根目录 右键 update 即可 Update 后出现如图 4 3 9 1 对话框 选择两个控制项 确定即可 图 4 3 9 1 Remove CVS 使用手册 第 30 页 共 45 页 如果只是点击 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 CVS 使用手册 第 31 页 共 45 页 图 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 显示指定文件的修改状态 如文件是本地修改还是库中修改 还显示修订版 号 本地修订本标记为文档图标 红色的矩形框 在此 你可以选择两个修订版本 CVS 使用手册 第 32 页 共 45 页 比较 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 破坏掉 CVS 使用手册 第 33 页 共 45 页 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 创建标签创建标签 tag 顾名思义就是做个标签 如张三的文件 他就可以做个标签为 张三 以表明是他的文 件 Tag 只是在文件上做了一个标签 并没有创建不同的文件 这一点跟 branch 不同 tag 是 标志用户特定信息的 创建标签 如图 4 3 10 1 选择 Create a tag by module 进入图 4 3 10 2 填写 tag 名字 模 块名和 CVSROOT 路径 确定即可 CVS 使用手册 第 34 页 共 45 页 图 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 路径 确定即可 CVS 使用手册 第 35 页 共 45 页 图 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 所示 所示 CVS 使用手册 第 36 页 共 45 页 图 4 3 10 5 如果需要停止在分支上的工作 返回主版本 首先保证分支版本已经完全更新到仓库中 然后需要删除 sticky 标签并更新本地拷贝为主版本的工作拷贝 选择相应的目录或文件 右键点击后选择 Update selection 选中 Creating missing directories that exist in the repository 再选择 Merge options 选项卡 在 Only this tag revision 中填入分支标签 确定 然后做 commit 即可 3 3 16 选择一个分支工作选择一个分支工作 要在一个分支上而不是在缺省的开发线上工作 你要将你本地的拷贝接到分支上 这需要 确信一些操作和更新 提交等等晨分支上而不是在开发的主线上 将本地拷贝转移到另外分支上 操作如下 1 选择工程的顶级目录 如果你准确的知道分支内的目录和文件 也可以分别选择 2 在选择上点击鼠标右键 选择 update 更新菜单 3 确信 Create missing directories than exist in the repository 被选中 4 选择 update options 项框 5 选中 By revision tag branch 输入框 输入你要切换到的分支标签名 6 点击 确定 按钮即可 WinCvs 就会作需要的更新 更新你工作着的拷贝并转移到预期分支上 更新操作将增加 或删除文件 CVS 使用手册 第 37 页 共 45 页 3 3 17 从分支中合并从分支中合并 从分支回到开发主线 对分支的工作有两种处理情形 1 我们接受分支做的工作 需要把它带到主线上去 继续向前开发 这个把分支工作带 回开发主线的过程 CVS 的术语叫 Merge 融合 2 我们不希望分支的工作影响原来主线的工作 不把分支的工作带到主线上来 下面 我们就进行回到主线的操作 1 选择左边的窗口的 Module 2 进行 Update 操作 Ctrl U 3 在 Update settings 对话框中 钩上 Create missing directories than exist in the repository 4 在 Update options 项框中 钩上 Reset any sticky tags date kopts 如果不想 Merge 分支的工作 直接跳到步骤 6 5 如果想接受工作 进行 Merge 点击 Merge options 项框 在 Merge 下拉框中选择 Merge with one rev tag 并填写它的分支名 见下图 6 按 确定 按钮 对于接受 Merge 情形 我们可以看到现在工作目录是这个样子 CVS 使用手册 第 38 页 共 45 页 可以看到 文件 BB txt 图标变红了 表示它已经在主线版本 1 1 1 1 基础上 进行了修 改 现在提交 Commit 这个修改 它的版本就变成了 1 2 版本 1 2 是版本 1 1 1 1 的内容 与 1 1 1 1 4 1 相融合的结果 在版本图中 看看是否是这样 在上面的图中 我们看到 开发主线已经从 1 1 延长到了 1 2 从分支版本 1 1 1 1 4 1 到 1 2 有一条红线 这就是 Merge 的结果了 CVS 使用手册 第 39 页 共 45 页 如果我们不选择 Merge 从分支版本 1 1 1 1 4 1 到 1 2 就没有红细线了 3 3 18 生成项目的生成项目的 ChangeLog 所谓 Changelog 就是一个文件 它以文本的方式 按日描述一个 Module 的变化历史 Changelog 对开发非常有用 因为有了它 我们对项目每天的改动一目了然 生成 Changelog 的操作 先选择左边窗口中的 Module 然后选择主菜单 Macros CVS Build Changelog 3 3 19 统一版本统一版本 在开发过程中 不同文件的修改情况不一样 形成各个文件的版本都不同 见下图 有的 文件版本为 1 6 有的为 1 3 有的为 1 2 等等 但是这时整个项目达到了某个稳定阶段 我 们需要一个统一的固定版本 比如 2 0 所有文件的版本号都成为 2 0 不管它原来的版本号 如何 下一阶段在这个版本上继续工作 统一提升 Module 的版本 对于 CVS 服务器运行在 Linux 或者 Unix 的情形 相对容易一些 如果使用 C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北辛集市事业单位(河北辛集经济开发区管委会)公开招聘化工专业人才5人考试模拟试题及答案解析
- 2025年宜宾珙县事业单位第二次公开选调工作人员5人考试模拟试题及答案解析
- 2025杭州临安工业产业发展有限公司下属国企招聘工作人员8人考试参考题库及答案解析
- 2025年河北唐山曹妃甸区招聘社区工作者183人考试模拟试题及答案解析
- 2025年蚌埠龙湖幼儿园教育集团招聘备考练习试题及答案解析
- 润滑油合同履约质量监控方案
- 探究2025年中小学STEAM教育可持续发展路径研究报告
- XX学校餐厨垃圾处置合同
- 房地产市场成交数据2025年房地产市场市场趋势归因研究报告
- 房地产企业产品创新策略规划与客群购房能力评估研究报告
- 安庆飞凯新材料有限公司6000吨-年光固化树脂及表面处理涂料项目环境影响报告书
- 月子会所运营方案
- 排污单位自行监测方案编制模板
- 工作安全分析JSA杜邦
- YY 1727-2020口腔黏膜渗出液人类免疫缺陷病毒抗体检测试剂盒(胶体金免疫层析法)
- 粘膜免疫系统概述
- 10室外配电线路工程定额套用及项目设置
- 钢板桩及支撑施工方案
- 急救中心急救站点建设标准
- 冷藏车保温箱冰排使用记录
- 精细化学品化学-课件
评论
0/150
提交评论