技术开发 频道

第N次亲密接触CVS :Eclipse开发必备

        【IT168 专稿】当我们将该 tag 曲线上的 * 标记拉直后,你就得到了由所有 tag 修订号组成的如下图的水平线:

  由于tag的目的是记录开发历史,因此人们通常不会删除或者改变标签。对tag的删除,移动,重命名多半是因为临时使用标签或者不小心放错位置。警告,下列命令会永久删除历史信息,使用时应尽量小心。

  cvs rtag -d rel-0-4 tc

  Dates/Tags

  与Versions一样,Dates也是标签Tag的集合。区别在于前者以版本作为tag的标记,而后者则以时间为标记。相比与Date类型,Version Tag更加常用。

  为了更好的全面理解这些核心CVS概念,我们通过Show History视图将这些概念串联起来,如下图所示。

  有对了相关概念的理解,接下来,我们将介绍CVS的常用操作。相信大家对日常的操作如update,commit非常熟悉,只做简单介绍。更多地是关注那些容易忽视但是特别使用的命令。

  作为三部曲之一的Copy操作,CVS对应的命令为check out。具体操作是,选择HEAD目录下的目标源文件夹,右键单击Check Out,如图:

  Check Out

  Check out之后的本地工作目录与CVS目录一致。如果想自定义文件夹的根目录,则可选择Check Out As命令。

  Switch to another Branch or Version

  作为三部曲之二的Modify操作,除正常的源代码变更操作外,对应一个非常重要的Eclipse CVS命令,即Switch to another Branch or Version,即切换到其它分支或者标签做源代码的修改,如图:

  Merge

  作为三部曲之三的Merge操作,除正常的update/commit外,也对应的一个非常重要的CVS命令merge,即将branch或tag与HEAD中的Base version进行合并,如图。

  Branch

  此外,如果想创建一个新的分支,可通过右键Team -> Branch打开Create a new CVS Branch。

  Tag

  如果需要发布一个新的版本2.0.6,可以新创建一个Tag。步骤为右键源代码工程 –> Team -> Tag as

  Version,如图。通过CVS Repository透视图可以查看相应的Tag。

  Patch

  补丁(patch)允许开发人员共享尚未提交到CVS的代码变更。补丁程序包含的是本地资源与CVS资源库的差别CVS Diff命令。补丁在许多场合都非常有用:

  · 由于权限的限制,需要将补丁程序发送给权限用户提交。

  · 需要一个临时工作区间隔离待提交的代码。

  · 在提交CVS之前,需要对更改的文件测试,可以将补丁程序发送给测试人员。

  要创建一个补丁,使用右键Team –> Create Patch,开启Create Patch向导完成补丁文件的创建。

  这里我们将补丁程序导出成文件patch.txt。按照默认方式完成向导。patch.txt内容如下:

  ### Eclipse Workspace Patch 1.0

  #P source

  Index: AsyncGssSocketLayer.cpp

  ===================================================================

  RCS file: /cvsroot/filezilla/FileZilla/source/AsyncGssSocketLayer.cpp,v

  retrieving revision 1.14

  diff -u -r1.14 AsyncGssSocketLayer.cpp

  --- AsyncGssSocketLayer.cpp 4 Mar 2005 10:35:04 -0000 1.14

  +++ AsyncGssSocketLayer.cpp 28 Nov 2011 07:26:39 -0000

  @@ -1,6 +1,6 @@

  // GSSAsyncSocksifiedSocket.cpp: implementation of the CAsyncGssSocketLayer class.

  //

  -//////////////////////////////////////////////////////////////////////

  +//////////////////////////////////////////////////////////////////////

  // Part of this code is copyright 2001 Massachusetts Institute of Technology

  #include "stdafx.h"

  patch.txt实际上是CVS Diff命令的输出,从而实现了CVS Repository之外的资源共享。相应地,开发人员可以共享补丁程序。

  Apply Patch命令提供了打补丁的方法,如图所示。

  比较&替换

  人生没有后悔药,但是Eclipse提供了,而且特别简单。快捷菜单操作Replace With和Compare With提供了本地历史记录与CVS Repository比较与替换的机会。需要说明的是,CVS Repository的资源既可以是HEAD也可以来自某一个分支,或者某一个tag。

  重命名

  一般情况下,要避免对CVS Repository作重命名操作。对于工程而言,CVS对待重命名后的工程为新工程。相应地,需要使用Team -> Disconnect操作解除项目与CVS的关联,然后再对项目重命名,最后,在重新连接到CVS之后,需要像其它新的工程一样定义。而对于文件而言,重命名会导致出现一个新的文件,不过幸运的是,原文件的内容会被拷贝到新的文件中。

  CVS vs SVN

  至此,相信读者对Eclipse CVS客户端有一个基本的了解。不过,CVS并非是完美的。下面我们来比较下两者的一些主要的不同点,如下表。

  存储类型存取速度事务总体评价

  CVS文件相比SVN慢没有实现4

  SVN数据库相比CVS快完全实现5

  实际上,CVS是一个古老的系统,其内部结构有许多改进之处。知道今天,仍有人想重头开始,重写CVS,但都未能成功,SVN的开发人员花了很多时间与心思在改进内部结构,使其变得简单、优雅,甚至有人认为SVN是CVS的接班人。

1
相关文章