CVS版本管理介绍

CVS 版本管理介绍

产品四部 黄昌发

1 概述

1.1 前言

CVS 的全称是Cuncurrent Versions System,是一种GNU 软件包,由Intersolv 公司开发。它是基于TCP/IP协议的版本控制工具,也是开源界最重要的开发工具之一。

CVS 采用Client/Server结构,所有的用户都在客户端进行CVS 操作,而所有命令的执行都在CVS 服务器端进行。

CVS 是一种基于RCS (Revision Control System修订控制系统)系统的维护工具,它明确的将源文件的存储和用户的工作空间独立开来,在一定的模式上扩展了RCS 的恢复提交功能,并使其有利于并行开发,是一个版本控制系统。

CVS 不采用对文件上锁的机制。CVS 采取多个用户可以同时对一个文件进行编辑,然后Commit (提交)的方式解决这个问题。假设出现冲突,使用者必须手工解决冲突之后再进行Commit 。在这种情况下,冲突的开发者必须进行足够的沟通以避免再次冲突。

理论上CVS 可以维护任意的文本文档的开发,而不是局限于程序设计。

1.2 存储结构

仓库(Repository ):

CVS 服务器上,一个源代码仓库被称为一个Repository 。

Repository 是CVS 系统保存软件资源的地方。所有项目的所有文件的所有版本都保存在这个仓库中。 一个服务器上可以运行多个Repository ,每个Repository 都是完全独立的,可以有不同的用户列表和访问规则。

上图的E:/cvshome就是一个Repository ,对应着硬盘上的一个文件夹。

模块(Module ):

在一个Repository 之下,文件按照Module 组织,一个Module 就是一个子文件夹。 每一个Module 就相当于一个工程,大致相当于Eclipse 里面的Project 。 一个软件工程通常作为一个单一模块存放在库中。

也可以多个软件工程作为存放在一个模块中。

工作拷贝(Working Copy):

工作拷贝是从CVS 服务器端取出的,保存在我们正在使用的客户端计算机上的代码拷贝。 一个项目在开发的过程中会有多个工作拷贝。 典型的情况是一个开发小组在开发一个项目,所有的小组成员都共用同一个CVS 服务器,共用同一个CVS 仓库,共用该项目在CVS 仓库中的同一个版本库,但是每个小组成员都有一个属于自己的工作拷贝。

每个人的工作拷贝在工作过程中独立进行修改,互不干扰。大部分情况下,这些工作拷贝各不相同。

1.3 版本结构

HEAD (主线):

任何一个模块(Module )都有一个主要路径。

对于项目,所有的文件在主线上形成该项目最新一个快照。

对于文件,主线上的文件代表了该文件在主要路径上的最新内容。 主线只有一条。

Version (版本):

对于整个项目,一个版本就是不停改变的项目在某个时间点上的一个快照。 对于文件,表了该文件在某个时间点上的内容。 一个Version 是通过Tag 操作基于主线创建的。 一个项目可以有多个Version 。

Branch (分支):

分支就像一棵正常生长的代码树中的枝杈。

分支代表了正在开发调试中、尚未正式发布的代码。

一个分支最终要么被合并到主线中去,要么被放弃。如果一个补丁包发布了,相应分支的代码应该被合并到主线上去。

一个分支也可能经历多次与主线的合并。 一个Branch 是基于某个Version 创建的。

一个项目可以有多个Branch 。

1.4 命令格式

CVS 的使用有两种方式:一是本机使用,一是远程执行。 本机使用是通过命令行窗口进行的。

远程执行则是通过客户端工具进行。例如WinCVS 工具、Eclipse 中的CVS 插件等。

CVS 的命令格式是:

cvs [cvs的选项] cvs-command [command 选项]

例如,查看CVS 的帮助信息:

cvs -H command

2 CVS 服务器

2.1 Wind ows 下安装

直接运行安装文件(cvsnt-2.0.41.exe ),即可完成安装。

2.2 服务器配置

运行Service control panel,出现CVS 的服务控制面板。

配置Repository :

其他配置:

CVS 用户: CVS 用户和密码,采用本机操作系统的用户和密码。也可以采用域用户进行认证。

3 Eclipse 中CVS 操作

3.1 仓库配置(Repository )

打开CVS Repositories视图:

点击快捷菜单Repository Location:

例如:

Host :

CVS 服务器IP 地址或机器名。 Repository Path:

CVS 服务器上配置的Repository Root。

需要注意的是路径名称的大小写、斜杠必须与服务器完全一致。 User & Password: CVS 服务器的本机操作系统用户和密码。 点击【Finish 】按钮,即可完成Repository 配置。

3.2 项目检出(Check Out)

从服务器取出代码,这也就是创建工作拷贝的过程。

根据CVS 的工作原理,如果要改动代码,我们应该先把代码从CVS 服务器中Check Out 到独立的工作目录,然后进行必要的修改,完成后再把经过修改的代码重新提交到服务器。

从CVS 服务器取出代码的时候,CVS 会根据用户的要求逐个检查文件的版本,选择正确的版本发送给用户。

打开CVS Repositories视图:

在要检出的项目(Module )上,点击Check Out快捷菜单:

或者点击Check Out As快捷菜单。

Check Out As 与Check Out的区别在于可以改变项目名称和路径,以及改变其他一些选项,如图。

检出之后,在Eclipse 中的包浏览器(Package Explorer)视图如下:

3.3 项目导入(Import )

将未被CVS 进行版本管理的代码引入CVS 系统之中,由CVS 开始对它进行版本管理。

打开Eclipse 中的包浏览器:

在需导入的项目名称上打开右键快捷菜单:

点击“Share Project”菜单:

选择仓库类型“CVS ”,继续:

选择一个已配置的仓库,继续:

采用项目名称作为Module 名称(也可以根据需要换一个名称),继续:

确定要导入的项目文件,点击【Finish 】按钮,即导入完成。

3.4 提交(Commit )

开发人员在修改好代码后,将文件送到服务器保存(又叫作Check In)。

CVS 在将代码存入服务器的时候要进行版本检查,以及做相应的记录。

在Eclipse 中,修改过的文件具有>标记:

在修改的文件上右键打开“Team ”快捷菜单:

点击【Commit …】菜单项,打开Commit 窗口:

输入注释,点击【Finish 】按钮,即完成该文件的提交。

可以对一个项目、一个目录下的所有文件进行批量提交。

只能对主线和分支中的文件进行Commit 操作。

可以通过Commit 操作来增加、删除文件或目录。

由于CVS 对文件名不区分大小写,并且对文件和目录的重命名没有提供较好的支持,操作很麻烦,所以,要慎重命名文件和目录。

3.5 更新(Update )

在协同开发的环境下,将其他人所作的最新修改从CVS 服务器中取到你的工作拷贝中,从而使得你的工作拷贝与服务器中的最新版本保持一致,也与项目的最新进展保持一致。

更新是同步各个工作拷贝的手段。

在项目名称上右键打开“Team ”快捷菜单:

点击【Update 】菜单项,即可完成本机文件的更新。

3.6 同步(Synchronize )

3.6.1 Synchronize 视图

上面的Update 操作是静默执行的,并没有给用户确认的机会,如果需要在更新时进行更多的控制,可以使用同步操作。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,将自动打开Synchronize 视图:

上图中:

表示服务器上新增的文件。可进行更新操作。

表示服务器上修改过的文件。可进行更新操作。

表示本机上新增的文件。可进行提交操作。

表示本机上修改的文件。可进行提交操作。

右键点击文件,可打开快捷菜单:

通过快捷菜单,可以对相关文件进行Update 和Commit 操作。

3.6.2 比较(Compare )

双击文件名,或者点击快捷菜单的“”,可打开比较窗口,详细查看本机和服务器上的文件内容差异。

通过比较窗口右上方的工具栏,可以方便地把服务器上的修改内容合并到本机文件中。

3.6.3 冲突(Conflict )

在协同开发的环境下,当两个开发人员对同一个文件的同一行代码进行修改,并且依次提交CVS 服务器的时

候,就发生了冲突。因为CVS 不能在同一个目录里保存两个相同名字的文件,而对同一个文件,它的一行代码只会是一种结果,而不是两种。

在同步视图中,可看到文件冲突如下。

这种冲突需要开发者手工消除,并提交到CVS 服务器中形成解决冲突之后的新版本。

首先,需要进行文件比较,把服务器上的修改内容合并到本机文件中。

然后,右键点击文件,打开快捷菜单:

点击“Mark as Merged”菜单项,把该文件标记为已解决冲突的修改状态:

再进行Commit 即可。

如果要放弃本机的修改内容,也可以点击“Override and Update ”菜单项,用服务器上的文件覆盖本机的文件内容。

3.7 分支(Branch )

3.7.1 切换分支(Switch )

默认情况下,我们在主线上工作,如图。

但实际上,我们大多需要在分支中进行开发。因此,需要将本地工作拷贝从主线切换到分支中。

注意,在切换之前,请确保本地工作拷贝不存在已修改尚未提交的文件。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,弹出窗口如下:

选择“”选项,并且点击【Refresh Tags】按钮:

展开“Branches ”目录,选中要切换的分支名称,点击【Finish 】按钮。

切换完成时包浏览器的显示如下,说明工作拷贝已经切换到分支上了:

在分支上,我们可以像在主线上一样进行更新、提交等操作,并且不影响主线上的文件。

可以按照同样的方法,切换到某个Version 上。

3.7.2 创建分支

一个分支是基于某个基线版本(Version )创建的。

在创建分支之前,请确保本地工作拷贝已切换到要创建分支的Version 上。

首先,按照切换分支的方法,把本地工作拷贝切换到要创建分支的Version 上。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,弹出窗口如下:

输入分支名称,例如V20120727_B1,点击【OK 】按钮,即可完成分支的创建。 因为分支在创建后无法删除或改名,所以请慎重进行创建操作。

3.7.3 合并主线

将主线的最新内容合并到分支中。

在合并之前,请确保本地工作拷贝已切换到要分支上,并且分支已经同步过。

合并是通过比较进行的。

在项目名称上右键打开“口如下: ”快捷菜单,点击【】菜单项,弹出窗

选择“HEAD ”标记,点击【OK 】按钮,将自动打开Synchronize 视图。

在文件比较后,通过右键快捷菜单“Replace ”,可将主线上的内容更新到分支中。

3.7.4 合并分支

将分支的最新内容合并到主线中。

在合并之前,请确保本地工作拷贝已切换到要主线上,并且主线已经同步过。

合并也是通过比较进行的。

在项目名称上右键打开“口如下:

”快捷菜单,点击【】菜单项,弹出窗

选择要合并的分支标记,点击【OK 】按钮,将自动打开Synchronize 视图。

在文件比较后,通过右键快捷菜单“Replace ”,可将分支上的内容更新到主线中。

3.8 版本(Version )

3.8.1 切换版本(Switch )

可以按照切换分支的方法,把本地工作拷贝切换到要某个Version 上。

要注意,切换后的本地工作拷贝是只读的,不允许进行Commit 操作。

3.8.2 创建版本

一个版本是在主线基础上创建的。

在创建版本之前,请确保本地工作拷贝已切换到要主线上,并且主线已经同步过。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,弹出窗口如下:

点击【Details 】按钮可以看到已经存在的所有版本标记。

输入要创建的版本标记名称,点击【OK 】按钮,即可完成版本标记的创建。

因为版本在创建后无法删除或改名,所以请慎重进行创建操作。

3.9 历史(History )

查看一个文件的修改历史。

在文件名称上右键打开“Team ”快捷菜单,点击【】菜单项,显示History 窗口如下:

Revision (修订):

文件的修订版本。

当增加一个文件到CVS 的时候,它会有一个初始Revision 是1.1,以后每次提交,就会增加到1.2,

1.3„„

Tag (标记):

Tag 用来进行标识必要的信息,包括Version 和Branch 标记。

Author (作者):

文件修订的作者,即提交人的用户名。

Comment (注释):

用来记录每次操作的内容和目的的信息。

在提交和导入等操作的时候,操作者必须提供一些注释信息。这些注释对于跟踪软件的变化过程十分

重要。

窗口右上角有一个工具栏:

这个工具栏可以控制History 窗口的显示方式。

在某一行记录上,点击右键,将弹出如下的快捷菜单: 表示Version , 表示Branch 。

通过这个快捷菜单,可以进行该文件的各个修订版本的查看、两个版本的文件比较、移动版本标记、显示注解视图等操作。

3.10 其他

CVS 还具有其他一些有用的功能,例如文件恢复、日期标记等,请自行参考相关资料。

CVS 版本管理介绍

产品四部 黄昌发

1 概述

1.1 前言

CVS 的全称是Cuncurrent Versions System,是一种GNU 软件包,由Intersolv 公司开发。它是基于TCP/IP协议的版本控制工具,也是开源界最重要的开发工具之一。

CVS 采用Client/Server结构,所有的用户都在客户端进行CVS 操作,而所有命令的执行都在CVS 服务器端进行。

CVS 是一种基于RCS (Revision Control System修订控制系统)系统的维护工具,它明确的将源文件的存储和用户的工作空间独立开来,在一定的模式上扩展了RCS 的恢复提交功能,并使其有利于并行开发,是一个版本控制系统。

CVS 不采用对文件上锁的机制。CVS 采取多个用户可以同时对一个文件进行编辑,然后Commit (提交)的方式解决这个问题。假设出现冲突,使用者必须手工解决冲突之后再进行Commit 。在这种情况下,冲突的开发者必须进行足够的沟通以避免再次冲突。

理论上CVS 可以维护任意的文本文档的开发,而不是局限于程序设计。

1.2 存储结构

仓库(Repository ):

CVS 服务器上,一个源代码仓库被称为一个Repository 。

Repository 是CVS 系统保存软件资源的地方。所有项目的所有文件的所有版本都保存在这个仓库中。 一个服务器上可以运行多个Repository ,每个Repository 都是完全独立的,可以有不同的用户列表和访问规则。

上图的E:/cvshome就是一个Repository ,对应着硬盘上的一个文件夹。

模块(Module ):

在一个Repository 之下,文件按照Module 组织,一个Module 就是一个子文件夹。 每一个Module 就相当于一个工程,大致相当于Eclipse 里面的Project 。 一个软件工程通常作为一个单一模块存放在库中。

也可以多个软件工程作为存放在一个模块中。

工作拷贝(Working Copy):

工作拷贝是从CVS 服务器端取出的,保存在我们正在使用的客户端计算机上的代码拷贝。 一个项目在开发的过程中会有多个工作拷贝。 典型的情况是一个开发小组在开发一个项目,所有的小组成员都共用同一个CVS 服务器,共用同一个CVS 仓库,共用该项目在CVS 仓库中的同一个版本库,但是每个小组成员都有一个属于自己的工作拷贝。

每个人的工作拷贝在工作过程中独立进行修改,互不干扰。大部分情况下,这些工作拷贝各不相同。

1.3 版本结构

HEAD (主线):

任何一个模块(Module )都有一个主要路径。

对于项目,所有的文件在主线上形成该项目最新一个快照。

对于文件,主线上的文件代表了该文件在主要路径上的最新内容。 主线只有一条。

Version (版本):

对于整个项目,一个版本就是不停改变的项目在某个时间点上的一个快照。 对于文件,表了该文件在某个时间点上的内容。 一个Version 是通过Tag 操作基于主线创建的。 一个项目可以有多个Version 。

Branch (分支):

分支就像一棵正常生长的代码树中的枝杈。

分支代表了正在开发调试中、尚未正式发布的代码。

一个分支最终要么被合并到主线中去,要么被放弃。如果一个补丁包发布了,相应分支的代码应该被合并到主线上去。

一个分支也可能经历多次与主线的合并。 一个Branch 是基于某个Version 创建的。

一个项目可以有多个Branch 。

1.4 命令格式

CVS 的使用有两种方式:一是本机使用,一是远程执行。 本机使用是通过命令行窗口进行的。

远程执行则是通过客户端工具进行。例如WinCVS 工具、Eclipse 中的CVS 插件等。

CVS 的命令格式是:

cvs [cvs的选项] cvs-command [command 选项]

例如,查看CVS 的帮助信息:

cvs -H command

2 CVS 服务器

2.1 Wind ows 下安装

直接运行安装文件(cvsnt-2.0.41.exe ),即可完成安装。

2.2 服务器配置

运行Service control panel,出现CVS 的服务控制面板。

配置Repository :

其他配置:

CVS 用户: CVS 用户和密码,采用本机操作系统的用户和密码。也可以采用域用户进行认证。

3 Eclipse 中CVS 操作

3.1 仓库配置(Repository )

打开CVS Repositories视图:

点击快捷菜单Repository Location:

例如:

Host :

CVS 服务器IP 地址或机器名。 Repository Path:

CVS 服务器上配置的Repository Root。

需要注意的是路径名称的大小写、斜杠必须与服务器完全一致。 User & Password: CVS 服务器的本机操作系统用户和密码。 点击【Finish 】按钮,即可完成Repository 配置。

3.2 项目检出(Check Out)

从服务器取出代码,这也就是创建工作拷贝的过程。

根据CVS 的工作原理,如果要改动代码,我们应该先把代码从CVS 服务器中Check Out 到独立的工作目录,然后进行必要的修改,完成后再把经过修改的代码重新提交到服务器。

从CVS 服务器取出代码的时候,CVS 会根据用户的要求逐个检查文件的版本,选择正确的版本发送给用户。

打开CVS Repositories视图:

在要检出的项目(Module )上,点击Check Out快捷菜单:

或者点击Check Out As快捷菜单。

Check Out As 与Check Out的区别在于可以改变项目名称和路径,以及改变其他一些选项,如图。

检出之后,在Eclipse 中的包浏览器(Package Explorer)视图如下:

3.3 项目导入(Import )

将未被CVS 进行版本管理的代码引入CVS 系统之中,由CVS 开始对它进行版本管理。

打开Eclipse 中的包浏览器:

在需导入的项目名称上打开右键快捷菜单:

点击“Share Project”菜单:

选择仓库类型“CVS ”,继续:

选择一个已配置的仓库,继续:

采用项目名称作为Module 名称(也可以根据需要换一个名称),继续:

确定要导入的项目文件,点击【Finish 】按钮,即导入完成。

3.4 提交(Commit )

开发人员在修改好代码后,将文件送到服务器保存(又叫作Check In)。

CVS 在将代码存入服务器的时候要进行版本检查,以及做相应的记录。

在Eclipse 中,修改过的文件具有>标记:

在修改的文件上右键打开“Team ”快捷菜单:

点击【Commit …】菜单项,打开Commit 窗口:

输入注释,点击【Finish 】按钮,即完成该文件的提交。

可以对一个项目、一个目录下的所有文件进行批量提交。

只能对主线和分支中的文件进行Commit 操作。

可以通过Commit 操作来增加、删除文件或目录。

由于CVS 对文件名不区分大小写,并且对文件和目录的重命名没有提供较好的支持,操作很麻烦,所以,要慎重命名文件和目录。

3.5 更新(Update )

在协同开发的环境下,将其他人所作的最新修改从CVS 服务器中取到你的工作拷贝中,从而使得你的工作拷贝与服务器中的最新版本保持一致,也与项目的最新进展保持一致。

更新是同步各个工作拷贝的手段。

在项目名称上右键打开“Team ”快捷菜单:

点击【Update 】菜单项,即可完成本机文件的更新。

3.6 同步(Synchronize )

3.6.1 Synchronize 视图

上面的Update 操作是静默执行的,并没有给用户确认的机会,如果需要在更新时进行更多的控制,可以使用同步操作。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,将自动打开Synchronize 视图:

上图中:

表示服务器上新增的文件。可进行更新操作。

表示服务器上修改过的文件。可进行更新操作。

表示本机上新增的文件。可进行提交操作。

表示本机上修改的文件。可进行提交操作。

右键点击文件,可打开快捷菜单:

通过快捷菜单,可以对相关文件进行Update 和Commit 操作。

3.6.2 比较(Compare )

双击文件名,或者点击快捷菜单的“”,可打开比较窗口,详细查看本机和服务器上的文件内容差异。

通过比较窗口右上方的工具栏,可以方便地把服务器上的修改内容合并到本机文件中。

3.6.3 冲突(Conflict )

在协同开发的环境下,当两个开发人员对同一个文件的同一行代码进行修改,并且依次提交CVS 服务器的时

候,就发生了冲突。因为CVS 不能在同一个目录里保存两个相同名字的文件,而对同一个文件,它的一行代码只会是一种结果,而不是两种。

在同步视图中,可看到文件冲突如下。

这种冲突需要开发者手工消除,并提交到CVS 服务器中形成解决冲突之后的新版本。

首先,需要进行文件比较,把服务器上的修改内容合并到本机文件中。

然后,右键点击文件,打开快捷菜单:

点击“Mark as Merged”菜单项,把该文件标记为已解决冲突的修改状态:

再进行Commit 即可。

如果要放弃本机的修改内容,也可以点击“Override and Update ”菜单项,用服务器上的文件覆盖本机的文件内容。

3.7 分支(Branch )

3.7.1 切换分支(Switch )

默认情况下,我们在主线上工作,如图。

但实际上,我们大多需要在分支中进行开发。因此,需要将本地工作拷贝从主线切换到分支中。

注意,在切换之前,请确保本地工作拷贝不存在已修改尚未提交的文件。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,弹出窗口如下:

选择“”选项,并且点击【Refresh Tags】按钮:

展开“Branches ”目录,选中要切换的分支名称,点击【Finish 】按钮。

切换完成时包浏览器的显示如下,说明工作拷贝已经切换到分支上了:

在分支上,我们可以像在主线上一样进行更新、提交等操作,并且不影响主线上的文件。

可以按照同样的方法,切换到某个Version 上。

3.7.2 创建分支

一个分支是基于某个基线版本(Version )创建的。

在创建分支之前,请确保本地工作拷贝已切换到要创建分支的Version 上。

首先,按照切换分支的方法,把本地工作拷贝切换到要创建分支的Version 上。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,弹出窗口如下:

输入分支名称,例如V20120727_B1,点击【OK 】按钮,即可完成分支的创建。 因为分支在创建后无法删除或改名,所以请慎重进行创建操作。

3.7.3 合并主线

将主线的最新内容合并到分支中。

在合并之前,请确保本地工作拷贝已切换到要分支上,并且分支已经同步过。

合并是通过比较进行的。

在项目名称上右键打开“口如下: ”快捷菜单,点击【】菜单项,弹出窗

选择“HEAD ”标记,点击【OK 】按钮,将自动打开Synchronize 视图。

在文件比较后,通过右键快捷菜单“Replace ”,可将主线上的内容更新到分支中。

3.7.4 合并分支

将分支的最新内容合并到主线中。

在合并之前,请确保本地工作拷贝已切换到要主线上,并且主线已经同步过。

合并也是通过比较进行的。

在项目名称上右键打开“口如下:

”快捷菜单,点击【】菜单项,弹出窗

选择要合并的分支标记,点击【OK 】按钮,将自动打开Synchronize 视图。

在文件比较后,通过右键快捷菜单“Replace ”,可将分支上的内容更新到主线中。

3.8 版本(Version )

3.8.1 切换版本(Switch )

可以按照切换分支的方法,把本地工作拷贝切换到要某个Version 上。

要注意,切换后的本地工作拷贝是只读的,不允许进行Commit 操作。

3.8.2 创建版本

一个版本是在主线基础上创建的。

在创建版本之前,请确保本地工作拷贝已切换到要主线上,并且主线已经同步过。

在项目名称上右键打开“Team ”快捷菜单,点击【】菜单项,弹出窗口如下:

点击【Details 】按钮可以看到已经存在的所有版本标记。

输入要创建的版本标记名称,点击【OK 】按钮,即可完成版本标记的创建。

因为版本在创建后无法删除或改名,所以请慎重进行创建操作。

3.9 历史(History )

查看一个文件的修改历史。

在文件名称上右键打开“Team ”快捷菜单,点击【】菜单项,显示History 窗口如下:

Revision (修订):

文件的修订版本。

当增加一个文件到CVS 的时候,它会有一个初始Revision 是1.1,以后每次提交,就会增加到1.2,

1.3„„

Tag (标记):

Tag 用来进行标识必要的信息,包括Version 和Branch 标记。

Author (作者):

文件修订的作者,即提交人的用户名。

Comment (注释):

用来记录每次操作的内容和目的的信息。

在提交和导入等操作的时候,操作者必须提供一些注释信息。这些注释对于跟踪软件的变化过程十分

重要。

窗口右上角有一个工具栏:

这个工具栏可以控制History 窗口的显示方式。

在某一行记录上,点击右键,将弹出如下的快捷菜单: 表示Version , 表示Branch 。

通过这个快捷菜单,可以进行该文件的各个修订版本的查看、两个版本的文件比较、移动版本标记、显示注解视图等操作。

3.10 其他

CVS 还具有其他一些有用的功能,例如文件恢复、日期标记等,请自行参考相关资料。


相关文章

  • Java编程入门教程
  • 第六章 Java Web开发环境搭建 本章主要内容包括:  文档样式概述  CSS 属性的定义  CSS中的版面布局  CSS 特殊用法  CSS 常用外观属性  常见疑难问题解答 本章主要介绍Java Web开发环境的搭建,分 ...查看


  • 软件测试过程中的测试配置管理与版本控制
  • 软件测试过程中的测试配置管理与版本控制 摘要: 随着计算机软件技术的发展,各种计算机软件种类繁多,功能各异,加上计算机软件规约的约束和发展,软件的规范性变得更加重要.为了开发合格的软件,在软件开发过程中,离不开软件测试.为了更好的完成软件测 ...查看


  • 计算机专业个人简历
  • 个人简历 基本信息 姓 名: 出生日期: 工作年限: 1985年9月12日 一年以上 性 别: 居 住 地: 电子邮件: 专 业: QQ 号码: 男 北京-海淀区 软件开发 学 历: 本科 (四年) 手机号码: 详细信息 ◆ 自我评价: 1 ...查看


  • 需求管理规范 (2)
  • 需求管理体系改进方法研究 需求管理过程 当软件开发完成需求开发工作之后,不可避免地会遇到软件需求的变更.有效的需求管理需要对变更带来的潜在影响及可能的成本费用进行评估.变更控制委员会与关键的项目风险承担者要进行协商,以确定哪些需求可以变更. ...查看


  • 计算机专业简历大全
  • 简历模板二 求职简历 基本信息 姓 名: 出生日期: 工作年限: 1985年9月12日 一年以上 性 别: 居 住 地: 电子邮件: 专 业: QQ 号码: 男 北京-海淀区 软件开发 学 历: 本科 (四年) 手机号码: 详细信息 ◆ 自 ...查看


  • DRP培训日志
  • 2008年12月24日(第一天),DRP业务流程 1. Web项目开发的一般流程 a) 需求确定 b) 需求分析 i. 架构分析和设计 ii. 业务逻辑分析和设计 iii. 界面设计 c) 开发环境搭建 d) 开发和测试 e) 文档编写 2 ...查看


  • 软件配置管理
  • 软件配置管理(Software Configuration Management,SCM)是一种标识.组织和控制修改的技术.软件配置管理应用于整个软件工程过程.我们知道,在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱. ...查看


  • NTOP监控网络流量的工具
  • 自动启动:ntop_enable="YES" 加入/etc/rc.conf 设置密码:ntop -A 设置启动:ntop -d ============================================== ...查看


  • 2012年1月自考软件开发发工具试题真题及答案
  • 全国2012年1月高等教育自学考试 软件开发发工具试题 课程代码:03173 一.单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选.多选或未选均无 ...查看


热门内容