IRLab

2003年2月10日

什么是CVS

CVS(Version Control System.)即版本控制系统。用来记录源文件的历史信息。甚至二进制文件,媒体文件等。

例如,当软件修改时有时会产生Bugs,并且你可能在做这次修改后很长时间不会发现这些Bugs。使用CVS,你可以容易地回顾老的代码版本去发现哪一次的修改导致这些问题。有时候这样会非常有帮助。

你可能会保留你每一次的代码版本,这可能会浪费你很多的代码空间。CVS使用种聪明的办法保存你的多个版本在一个文件中。它仅仅保留版本间的不同内容。

它可以协助一组人共同开发一个工程。如果你是一个项目中的一组成员之一,CVS也能够帮助你。除非你特别仔细,你很容易覆盖其他人的工作。一些编辑器,例如GNUEmacs,试图去判定一个文件是否被两人同时修改。不幸的是,如果一个人使用其它的编辑器时,这个安全方式将不再有效。CVS使用让不同开发者独立工作的方式解决了这个问题。每一个开发者的工作都在他自己的目录内,并且CVS将 在每个开发者的工作完成后进行合并工作。

基本概念

仓库(Repository)

CVS的仓库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令,获得一份本地copy,改动后再check in(commit)回仓库。而仓库通常为与工作目录分离的。CVS通过多种方式访问仓库。每种方法有不同目录表示形式。

数据如何存放在repository中:随着CVS版本的不同,存放结构会发生变化,一般情况下用户无需了解数据到底是如何存放的。

Revision

每一个file的各个revision都不相同,形如1.1, 1.2.1,一般1.1是该文件的第一个revision,后面的一个将自动增加最右面的一个整数,比如1.2, 1.3, 1.4...有时候会出现1.3.2.2,原因见后。revision总是偶数个数字。一般情况下将revision看作时CVS自己内部的一个编号,而tag则可以标志用户的特定信息。

Tag

用符号化的表示方法标志文件特定revision的信息。通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定tag的文件提交或者checkout。另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个tag中。如果命名一个已存在的tag默认将不会覆盖原来的;

Branch

当用户修改一个branch时不会对另外的branch产生任何影响。可以在适当的时候通过合并的方法将两个版本合起来;branch总是在当前revision后面加上一个偶数整数(从2开始,到0结束),所以branch总是奇数个数字,比如1.2后面branch为1.2.2,该分支下revision可能为1.2.2.1,1.2.2.2,...

Conflct

完全是纯文本的冲突,不包含逻辑上的矛盾,比如CVS不能解决如下问题:某人修改了函数f的参数,而另外一个人在另外一个地方用老的参数调用该函数。文本冲突需要用户自己参与解决,CVS无法自动解决。

安装CVS客户端

1.Windows客户端的安装

在此,我们介绍WinCVS(一款相当不错的基于Windows的CVS客户端软件)的安装。请在""fileserver"software"programming"CVS目录下下载WinCVS软件并安装之。其安装过程与普通的Windows软件相同,其运行界面如下:

2.客户端配置

客户端配置最重要的是CVSROOT环境变量的配置。其格式是:

:pserver:username@hostname(或者IP地址):CVS仓库路径

例如,我在使用我们实验室的CVS服务器时的配置为:

:pserver:car@192.168.2.2:/had/src

每一个实验室的成员应该是用自己的mail服务器账户作为usernam,密码也是mail服务器的密码。

配置对话框如下:

3.测试远程访问CVS服务器

在WinCVS窗口中选择Admin->Login命令,会出现提示输入密码的窗口。输入密码后,单机OK按钮。然后察看命令结果输出窗口中的输出结果。如果显示错误信息,则表明安装配置有误,请察看前面的步骤。如果仍然有错误,请与管理员联系。

4.在Visual Studio中集成CVS

用CVS取代Visual Studio中所使用的Microsoft Visual Source Safe,步骤如下:

(1)    安装Microsoft Visual Studio;

(2)    安装WinCVS;

(3)    到""fileserver"software"programming"CVS下载iglooinstall.zip并安装igloo;

(4)    将WinCVS安装目录下的cvs2ntlib.dll和cvs2ntslib.dll文件拷贝到igloo的安装目录下。

完成以上步骤以后,打开Microsoft Visual Studio就可以看到进行版本管理需要的菜单了,如下图所示:

经常使用的CVS功能

使用igloo在Visual Studio中使用CVS进行版本的控制和管理是一件十分轻松惬意的事情。其为用户提供了大多数的基本的CVS 命令的图形接口,使我们只是简单的点击鼠标,就可以完成一般的CVS控制命令,下面将逐一介绍:

Check Out

把源文件从RCS源代码仓库中取出,缺省的版本是最新的版本,如果你需要一个指定的版本,则需要使用-r选项指定。

在每次更改源代码之前,需要Check Out最新的版本,再起基础之上对源代码进行修改。将代码目录checkout到指定目录下,所有文件都是read-write

Check In

把源代码加入到RCS源代码仓库中,每一个添加进代码库中的文件的版本是 1.1。以后每次修改文件重新ci以后,此文件的版本递增为1.2 ,1.3.……。

在每次对源代码修改之后,需要Check In,提交最新版本的源代码。

冲突:多人同时修改同一内容。冲突的情况下,通过文件两个版本的比较消除冲突的地方后再次提交。比较两个版本不同的方法是:

1)可以利用CVS自带的比较工具,CVS会把不同部分通过

<<<<<<<<<<<

...

==========

...

>>>>>>>>>>>

列出来;

2)也可以利用其它文本比较工具比较(Preference setting中选定,Query-diff setting中选定);

Add to Source Control

将新的文件加入到版本控制之中。

References

1.杨锦方等. CVS和Nightly Build技术. 清华大学出版社

2.使用CVS进行版本管理

3.WINDOW系统下CVS的使用

4.Karl Fogel. Open Source Development With CVS

5.Per Cederqvist et al. Version Management With CVS

转载于:https://www.cnblogs.com/starspace/archive/2009/01/09/1372855.html

CVS 客户端使用手册相关推荐

  1. java自动化测试成长日记-之CVS客户端和服务端安装和部署1:CVS服务端的配置和基本使用...

    CVS服务端的配置和基本使用 在做java自动化测试集成环境搭建的时候,无论怎样,你都会选择一个源代码管理工具,如:SVN,CVS,VSS等:但如果你使用Eclipse工具,建议你使用CVS源代码管理 ...

  2. Bugfree 客户端使用手册

    BugFree基于PHP和MySQL开发,是免费且开发源代码的缺陷管理系统.服务器端在Linux和Windows平台上都可以运行:客户端无需安装任何软件,通过IE,FireFox等浏览器就可以自由使用 ...

  3. JSF客户端使用手册

    说明 名词解释: 注册中心(Registry Server):提供服务信息的注册订阅,配置管理,配置下发等功能. 注册中心寻址服务(Index Server):简单的http的注册中心寻址. 注册中心 ...

  4. linux下git客户端使用手册,linux下git客户端命令总结.docx

    linux下git客户端命令总结 如果不特殊说明,'$'表示在linux终端命令行下执行一. 安装gitlinux Fedora系列安装命令:$ sudo yum install gitlinux D ...

  5. TortoiseSVN (Subversion客户端) 使用手册(中文) (五)

    完整(已排版)下载:https://download.csdn.net/download/zjyzfn/14973947 4.20 追溯 有时你不仅要知道哪一行做了修改,还要精确地知道谁修改了一个文件 ...

  6. TortoiseSVN (Subversion客户端) 使用手册(中文) (六)

    完整(已排版)下载:https://download.csdn.net/download/zjyzfn/14973947 第5章 版本库瘦身 版本库瘦身的目的是为了节省存储空间.操作方法是通过命令行备 ...

  7. TortoiseSVN (Subversion客户端) 使用手册(中文) (四)

    完整(已排版)下载:https://download.csdn.net/download/zjyzfn/14973947 4.4 提交修改 提交修改:将工作副本的修改更新到版本库的操作,提交修改的相关 ...

  8. CVS的几个学习小站及配置说明

    这两天考虑到PSP团队开发DNN模块的方便性,我提议dudu和师域建好了CVS服务器.为了让大家尽快熟悉CVS的操作,师域叫我写一个文档给大家看,我在网上看了一些相关介绍,也安装CVS客户端和服务端进 ...

  9. 各种Java API帮助文档下载

    声明:此文章是转载javaeye 中CaptainCook的文章 java api 英文chm下载 Java API Docs是学习和使用Java语言中最经常使用的参考资料之一,完整的Java API ...

最新文章

  1. Swift项目引入第三方库的方法
  2. java基础集合类之set
  3. Android平台监听系统截屏方案预研及相关知识点
  4. $emit传递多个参数_10年架构师深解java核心技术:方法参数+对象构造,确定不学?...
  5. MySQL笔记(四)多表连接查询
  6. 第一章练习题三级菜单
  7. 大杂烩 -- Iterator 和 Iterable 区别和联系
  8. java oa系统消息推送_第三方系统向泛微OA系统推送消息
  9. gazebo 模型导入
  10. Flash背景透明(透明背景)设置方法
  11. Win10电脑只有一个C盘怎么分区分盘?
  12. C++命名空间中类声明、成员函数声明和函数模板
  13. Linux开发环境——SCL软件集
  14. Python高效编程的19个技巧
  15. Unity中镜像图片显示
  16. 贝叶斯方法与Ridge回归的联系
  17. 华为云数据库 GaussDB(for MySQL),让企业无忧数据恢复
  18. 如何把视频中的声音提取出来转化成文字?
  19. Prescan8.5安装详细教程
  20. 如何隐藏 MacBook Pro 上奇怪的刘海

热门文章

  1. Java JDK 安装配置
  2. LeetCode 519. 随机翻转矩阵(哈希)
  3. LeetCode 662. 二叉树最大宽度(递归)
  4. 基于sklearn.decomposition.TruncatedSVD的潜在语义分析实践
  5. 亚马逊出的平板电脑_亚马逊Fire HD 8 Plus评测:适合看视频和轻度游戏的廉价平板...
  6. 机器学习回归算法—岭回归及案例分析
  7. 11.MYSQL高级(一)
  8. 自然场景人脸检测技术实践
  9. 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估
  10. 肖仰华 | 知识图谱与认知智能