Eclipse中CVS界面功能描述

现在,您已经对CVS有了一个基本的理解。接下来,我们将讨论Eclipse是如何为CVS使用者提供帮助的。在对其进行讨论之前,先略为详细地看一下Eclipse的CVS用户界面。在开始之前,Eclipse的CVS用户界面是毫无价值的。这是因为,与Eclipse中的很多操作相似,大多数的CVS资源库访问操作都在后台运行,这些操作不会对其他操作造成妨碍。诸如检出、提交、同步等可能需要长时间运行的操作并不会对您所要完成的其他任务造成妨碍。在下面所给出的这个简短列表中,列出了在Eclipse用户界面中使用CVS时会碰到的最常见任务。在练习5中,您会实践所有这些任务。
  • 定义到CVS资源库的连接。
  • 浏览CVS资源库。
  • 将新的工作空间项目定义到CVS中。
  • 从CVS中检出已有项目。
  • 将工作空间中的更改提交给CVS。
  • 使用CVS中的最新版本来更新自己的工作空间项目。
  • 在合适的里程碑处进行版本设置。
  • 用资源库中的资源来比较或替换工作空间中的资源。

5.4.1 CVS Repository Exploring透视图:资源库主页

如图5-1所示的CVS Repository Exploring透视图是在Eclipse中使用CVS的大本营。在该透视图中含有CVS Repositories视图、CVS Resource History视图以及编辑器区域。在CVS Repositories视图中会显示出您的工作空间所知道的CVS资源库。而在CVS Resource History视图中所显示的则是受CVS控制的任何已知文件的修改历史记录。在CVS Repository Exploring透视图中,您可以建立与CVS服务器的连接。

5.4.2 CVS Repositories视图

CVS Repositories视图扮演着资源库浏览器的角色。在CVS Repositories视图中,您可以对资源库中存在的项目进行选择,并可将这些项目检出到工作空间中。如图5-1所示,CVS Repositories视图位于CVS Repository Exploring透视图的左边窗格中。通过使用快捷菜单New | Repository Location...或选择Add CVS Repository命令,您可以在自己的工作空间中定义CVS资源库的位置。Eclipse支持各种类型的CVS连接(见图5-2)。在CVS Repositories视图中,您可以定义多个CVS资源库。在浏览资源库时,您可以看到资源库中的内容。如图5-1所示,这些内容包括HEAD、Branches、versions目录中的项目以及Dates条目。您可展开目录树或使用工具栏中的Go Into向前浏览图像和Back向后浏览图像操作来往下一直看到具体文件。在工具栏上有一个Refresh View操作,由于CVS Repositories视图不会与资源库中的内容更改自动保持一致,所以在做任何重要操作之前,您可能要使用Refresh View按钮来刷新CVS Repositories视图。

出于方便的考虑,如果您从Resource透视图中打开了CVS Repositories视图,那么该视图将作为一个选项卡式视图显示在Navigator透视图的旁边。

在CVS Repositories视图中,一个最常见的任务是从资源库中将项目检出到您的工作空间中。要完成上述任务,请先在Branches、HEAD或Versions下选择一个项目,然后再在单击鼠标右键后所出现的快捷菜单中选择Check Out命令。

图5-1 CVS Repository Exploring透视图

图5-2 在工作空间中定义新的CVS资源库位置

在第一次展开CVS Repositories视图中的Branches目录时,您会看到该目录中没有任何内容。在使用了快捷菜单操作Refresh Branches…后会出现Refresh Branches对话框(见图5-3)。在Refresh Branches对话框中,您可以为一个或多个资源库项目执行CVS中的分支标记检索请求。CVS资源库中可以包含大量分支。而您可能仅对其中的部分分支感兴趣。在Refresh Branches对话框中,您可以对要进行分支标记信息检索的项目进行选择。在表5-1所示的参考列表中,列出了CVS Repositories视图中的所有可用的快捷菜单操作。其中有些操作依赖于您在图5-3的第3个栏目中的选择。一开始,您可能需要使用以下这些操作:New | Repository Location…、Check Out…、Compare with…以及Show in Resource History。现在,您不必理解这些操作,它们仅为您提供一个参考。

图5-3 Refresh Branches对话框

表5-1 在CVS Repositories视图中可使用的上下文操作

操    作

描    述

从快捷菜单中可获得该命令

Add to Branch

List…

将一个项目(但不包括该项目的内容)添加至一个新的或已经存在的分支上。该操作可代替Team | Branch操作。对于那些将在一个分支中单独开发的新项目来说,该操作是比较有用的

被选择的项目

Check Out

把从资源库中所选择的内容复制到自己的工作空间中。而且文件夹可被检出,同时该文件夹与项目的一致性会得到维护。对于含有独立部分的大型项目来说,该操作非常有用

被选择的项目,以及在Branches、HEAD或Versions下所选择的项目文件夹

Check Out As…

把从资源库中所选择的内容复制到自己的工作空间中,并以另外一个名称来命名。在对所做的更改进行提交时,该项目保持它在CVS中的初始一致性。当需要在工作空间中同时拥有某一项目的多个实例时,该操作非常有用

被选择的项目,以及在Branches、HEAD或Versions下所选择的项目文件夹

(续表) 

操    作

描    述

从快捷菜单中可获得该命令

Compare

在选择了两个资源库文件后,执行该操作会显示出Compare视图

两个被选择的资源库

Compare With…

该操作会打开Compare with Branch or Verson对话框,并允许您将所选资源与Branches、HEAD或Versions中的资源进行比较

被选择的资源

Configure Branches and

Versions…

执行该操作后将显示出一个对话框。在所显示的对话框中会显示出资源中的分支或版本标记。而对话框中所显示的那些标记会显示在CVS Repositories视图中

各种对象

Copy to Clipboard

将连接字符串复制到写字板上。例如:pserver: anonymous@dev.eclipse.org:/home/eclipse

被选择的资源库

Discard location

从CVS Repositories视图中删除所选资源库的位置定义

被选择的资源库

New | Date Tag…

执行该操作后会显示出一个对话框以创建新的日期标记

被选择的资源库,在CVS Repositories视图中所选择的Dates条目

New | Repository Location…

执行该操作后将显示出一个对话框以定义新的CVS资源库位置。另外还可获得一个工具栏图标

任何对象

Open

执行该操作后会在编辑器中打开所选文件的最新版本

被选择的文件

Properties

显示所选资源库的属性及其连接信息

被选择的资源库

Refresh Branches…

执行该操作后将显示出一个对话框以允许您发现一个或多个项目的分支

在CVS Repositories视图中所选择的Branches条目,被选择(或没有被选择)的资源库位置

Refresh View

使用资源库的当前信息来刷新CVS Repositories视图

各种对象

Remove

将所选的日期标记从CVS Repositories视图删除掉

被选择的日期标记

Show Annotation

该操作会为所选文件显示CVS Annotate视图

被选择的文件

Show In Resource History

该操作会在CVS Resource History视图中显示所选文件的版本历史信息

被选择的文件

Tag As Version…

将一个版本标记应用到所选的资源及其子资源上

被选择的资源

Tag With

Existing…

该操作会将一已有的资源库版本或分支标记应用到所选的资源上。这是一个比较特殊的操作。有关何时使用该操作的更多信息请参见联机帮助中的Moving Version Tags专题

被选择的资源

5.4.3 CVS Annotate视图

CVS Annotate视图与CVS Repository Exploring透视图中的CVS Repositories视图使用的是同一界面空间。CVS Annotate视图用来标识各版本文件中所添加的新行以及被更改过的行。CVS Annotate视图还会指出做出这次修改的是谁。现在您知道是谁做出了这些难以解释的更新,或者是谁应该对这些难以解释的更新负责。对于所选择的任何版本来说,文件中所添加的新行会在编辑器中突出显示(见图5-4)。若要打开CVS Annotate视图,则从CVS Repositories视图、CVS Resource History视图的快捷菜单Team中选择Show Annotation操作。打开CVS Annotate视图的一种比较方便的方法是从Navigator透视图或Package Explorer视图中所显示的某一个文件上选择Team | Show Annotation操作。在打开CVS Repository Exploring透视图时会打开CVS Annotate视图,CVS Resource History视图,并且在编辑器中所打开的文件的版本是最新的。CVS Annotate视图中的选择操作会将编辑器复位到被更新的代码行,并且相应的版本会在CVS Resource History视图中突出显示出来。相反,如果在编辑器中选择了一行代码,那么在CVS Repository Exploring透视图的那些视图中就会适当地对所更改的对象进行突出显示。现在您就可以非常容易地对任何文本文件的、详细的更改历史信息进行检查。

图5-4 CVS Repository Exploring透视图中的CVS Annotate视图

5.4.4 CVS Resource History视图

CVS Resource History视图可显示某一具体文件的所有版本的详细信息(见图5-5)。CVS Resource History视图是CVS Repository Exploring透视图的一部分。在CVS Repositories视图中先选择一个文件,然后再在单击右键所出现的快捷菜单中选择Show in Resource History命令,这样您就可以看到该文件的历史版本信息。在受CVS控制的项目上单击鼠标右键后所出现的Team快捷菜单项中也有Show in Resource History命令。作为一种查看文件历史的快速方法,您可以将受CVS控制的工作空间中的某一文件拖放到CVS Resource History视图以直接查看该文件的历史信息。

图5-5 CVS Resource History视图

对于任何被选择的修订版本来说,与该修订版本相关的分支和版本标记,连同该版本的文件被提交到资源库时所提供的注释,都会一起显示在CVS Resource History视图的底部(见图5-5)。通过在CVS Resource History视图的下拉菜单中进行相应选择,我们可以隐藏该视图中的“Tags”项和“Comment”项。

文件的历史记录可能比较长,这时,您可以使用CVS Resource History视图工具栏上的Filter History过滤任务或属性按钮来过滤CVS Resource History视图。也可以根据作者、注释值、日期变化等来对CVS Resource History视图中的显示内容进行过滤。CVS Resource History视图工具栏上的Link with Editor操作会使CVS Resource History视图与当前活动编辑器(仅对CVS控制之下的文件)保持同步。

对于在CVS Resource History视图中被选择的那些版本来说,您对它们可以执行的操作是依赖于资源是否已被复制到工作空间而发生变化的。这些操作被列在表5-2中。

表5-2 CVS Resource History视图中的操作

操    作

描    述

Compare

该操作会对所选的两个版本进行相互比较

Get Contents

该操作会用所选版本的内容来替换该资源的本地工作副本中的内容

Get Sticky Revision

该操作会将资源的本地工作副本还原为一个先前版本。本地副本会作为资源库修订版,并会保留相同的版本标记。需要指出的是,只有在对CVS非常熟悉的情况下,您才可以使用该操作。该操作的后果之一是,除非“sticky revision”标记被移走(直接使用CVS命令),否则您不能提交任何进一步的修改。当然,您可使用Replace With | Latest from Repository操作返回到原版本。通常,除非您是一个熟练的CVS用户,否则您可能不会对“sticky revision”标记感兴趣

Open

该操作会在编辑器中打开所选的修订版文件。这时,您是不能对该版本文件作出任何更改的

(续表) 

操    作

描    述

Refresh View

该操作会用CVS资源库中的内容来更新CVS Resource History视图

Show Annotation

该操作会使Eclipe切换到CVS Repository Exploring透视图,并使得CVS Annotate视图变为当前焦点以显示出所选文件的注释

Tag with Existing…

该操作会将已有的资源库版本或分支标记应用到所选的资源上。该操作是一个特殊的操作。请查看联机帮助中的Moving Version Tags专题以获得何时使用该操作的详细信息

5.4.5 查看CVS命令

Eclipse Console视图可显示出CVS与Eclipse之间的所有的命令和响应;在您碰到问题的时候,该视图是非常有用的。在Eclipse Console视图中还显示了所发布的供用户使用的任何Eclipse CVS操作的所有CVS命令。在Team | CVS | Console首选项页面中,您可以对该控制台的外观和行为进行配置。

5.4.6 CVS是如何管理工作空间中项目的

图5-6显示了Package Explorer视图中一个处在CVS控制之下的项目。通过观察图标上的标记修饰符以及附加的文字信息,您可以很明显地看出这一点。只有在启用了Workbench | Label Decorations首选项设置后,Eclipse才会在Package Explorer视图中显示附加文字信息。对于那些受版本控制所有资源来说,在它们的资源图标上都有一个很小的磁盘标志修饰符。对于那些CVS所不知道的、被添加到项目中的文件来说,在这些文件的图标中也有一个很小的标志修饰符。在如图5-6所示的Package Explorer视图中,紧接着项目名后面的是该项目所属CVS资源库服务器的名称(位于方括号中)。如果该项目是被作为一个分支部分来使用的,那么该分支的名称也会被包含在方括号中。文本修饰符>表明本地资源是一个传出更改(outgoing change),这就意味着该本地资源已经在本地修改过,并与CVS中相应内容不一致。Package Explorer视图中受CVS控制的文件夹(直至项目文件夹)也具有这个特征。资源名后面的圆括号中所显示的文本表示的是该资源的文件格式(ASCII格式或二进制格式)。我们知道,对于ASCII文件来说,在CVS文件实例和本地文件实例之间的并行修改可被合并。而二进制文件只能被替换。

图5-6 Label Decorations首选项被启用时受CVS控制的项目

在Team | CVS | Label Decorations首选项页面中,您可以对CVS标签修饰的表示和规则进行修改。

5.4.7 在Team快捷菜单中可获得的CVS操作

Team菜单可从任何工作空间资源的快捷菜单中获得。有几个CVS操作是与Team菜单相关的。我们将对使用CVS进行工作维护中最常用的操作进行总结。Team菜单下的具体子菜单随着所选择的是否是一个项目而发生变化。只有在项目没有被CVS或任何其他资源库管理时,所选择的项目才会有一个Share Project…操作。表5-3所提供的是一个所有CVS小组操作的参考列表。其中有些操作可能是您不熟悉的。我们将在本章后面对这些操作进行讨论。通常情况下,您最常用的操作是Share Project…、Synchronize with Repository…、Update…以及Commit…。Share Project操作是一个允许您将项目加到CVS中的综合性向导。从定义CVS资源库连接到提交项目资源之间的每一个步骤都包括在该向导中。

表5-3 Team菜单中的CVS操作

操    作

描    述

Add to .cvsignore…

该操作会将所选的项目文件排除在CVS管理之外。这些被排除的文件不会出现在Synchronize视图之中,也不会被提交给CVS资源库。CVS在您的项目中维护了一个名为.cvsignore的文件。在该文件中会标识出那些被排除的文件实例。一开始,.cvsignore文件是不存在的;在该操作第一次执行时,才会创建.cvsignore文件。您必须将.cvsignore文件添加到版本控制中,并在CVS中维护该文件

Add to Version Control

该操作会将所选文件置于CVS控制之下。典型情况下,在项目中创建新文件时会使用该操作。如果您没有将资源显式地添加到版本控制中,那么在执行提交操作时,Eclipse会对您作出提示

Apply Patch…

该操作将使用由Create Patch操作所创建的补丁文件来修补程序

Branch…

该操作会创建一个分支。这样,项目(或所选资源)可独立于其他开发过程而被修改

Change ASCII/Binary
Property…

执行该操作后会显示Set Keyword Substitution向导。该向导允许您为所选文件选择期望的CVS关键字替换模式。它对CVS如何解释ASCII或二进制文件进行了定义

Commit…

如果没有冲突发生,该操作会使用您的本地更改来更新CVS资源库,并会提示您给出一个注释。如果执行该操作时所选择的操作对象是一个项目或文件夹,那么项目或文件夹中的所有被修改资源都将提交到CVS中。如果CVS中的相应文件取代了所要提交的文件,那么Commit…操作将失败

Create Patch…

该操作会基于本地资源和CVS之间的不同而创建一个补丁文件。其他人可共享该补丁文件。这就允许在资源库之外共享您的工作

Disconnect…

该操作会在所选工作空间项目中删除所有CVS连接信息

(续表) 

操    作

描    述

Edit

该操作只可用于那些启用了Watch/Edit(可在项目的CVS属性页面或CVS首选项设置中启用该功能)的项目。该操作会通知CVS服务器,让它知道您正在更新该文件。如果有其他人(一个或多个)正在编辑该文件,那么您将被提示,以就是否继续该操作作出决定。此时,您可忽略该提示并对文件进行修改。但是,在您试图对修改进行提交时可能会碰到冲突。如果您只是想先打开所要编辑的文件,那么该文件会被打开。但是在试图对该文件进行修改时,您会得到相同的提示。如果要使用外部编辑器,那么您首先必须要做的是取消该文件的只读状态,然后再使用外部编辑器打开该文件。在后面,我们会对该操作继续进行讨论

Merge…

该操作会将某一具体分支中的修改合并回该分支之前的代码库中

Restore from

Repository…

对于那些被删除的项目文件来说,如果它们仍存在于项目中,并允许您将它们恢复回原工作空间,则执行该操作后会列出这些被删除的文件。在本章后面,我们将会对该操作进行详细讨论

Share Project…

只有项目才能使用该操作。而且,只有在那些不受资源库管理的项目上才可以看到该操作。执行该操作后会显示向导。在该向导中,您可以完成的任务有:将项目与一个可以使用的资源库相关联,以及提交项目资源。其他资源库提供程序也可能会使用该操作

Show Annotation

执行该操作后将切换到CVS Repository Exploring透视图,并会将焦点集中到CVS Annotate视图以显示出所选文件的注释

Show Editors

该操作适用于那些启用了Watch/Edit(可在项目的CVS属性页面或CVS首选项设置中启用该功能)的项目中的文件夹和文件。在执行该操作后会打开CVS编辑器视图。在该视图中会标识出其他正在编辑该文件或该文件夹中内容的用户。只有那些启用了Watch/Edit的项目才可能显示在CVS编辑器视图中

Show in Repository

History

该操作为所选资源显示CVS Repository History视图

Synchronize with

Repository…

该操作会将所选择的文件与CVS资源库中的对应文件进行比较,并切换到Team Synchronizing透视图。比较后所发现的任何差异都会显示在Synchronize视图中。对于项目或文件夹来说,在执行该操作时,它们里面所包含的全部资源都将与CVS中的对应资源进行比较。而那些与CVS中对应资源相比发生了变化的资源会被显示在Synchronize视图中。在您检查所有更改、与资源库实例进行比较,以及解决冲突时,这是一种最安全的CVS使用方法

Tag as Version…

该操作会为所选项目、文件夹(或文件)以及所有的子文件资源的所有CVS实例添加版本标志。您也可以在CVS Repositories视图中进行版本标识

(续表) 

操    作

描    述

Unedit

该操作只可用于那些启用了Watch/Edit(可在项目的CVS属性页面或CVS首选项设置中启用该功能)的项目文件。该操作会将您从当前正在编辑某一文件的那个用户列表中删除掉。执行该操作后,您会从当前活动用户列表中被删除,并且所做的任何更改都会被取消,而所编辑的文件会恢复到执行任何更新之前的内容。在向CVS提交文件时,如果工作空间副本与服务器副本完全相同,那么Unedit操作会被隐式调用。在本章后面部分,我们还将对该操作进行讨论

Update…

该操作会使用CVS中所有最新版本来更新本地资源。CVS中的更新将与本地资源(二进制文件除外)进行合并。建议您在使用Commit…操作前执行Update…操作。如果其他人在您的最近一次更新后又进行了提交操作,那么您的提交操作将会失败。建议您用Synchronize with Repository…操作来代替Update…操作

5.4.8 Team Synchronizing透视图和Synchronize向导

Team Synchronizing透视图是您对工作空间与CVS(其他资源库提供程序可被集成到Team Synchronizing透视图中)进行同步的大本营。在选择了Team | Synchronize with Repository…操作后,您会被提示并切换到Team Synchronizing透视图。在Team Synchronizing透视图中含有Synchronize视图和一个编辑器区域。所有被打开的编辑器都会显示在该编辑器区域中。图5-7所显示的就是一个Team Synchronizing透视图的例子。在Synchronize视图中,您可以对本地项目和该项目的CVS副本之间的差别进行观察和操作。其他想使用该透视图的资源库提供程序也可使用该视图。在打开一个文件的同时,Eclipse也会打开一个适当的比较编辑器(文本、Java、XML或图像)。在比较编辑器中会显示出工作空间文件和CVS中该文件的最新版本之间的差别。这样,您就可以在将文件提交到CVS之前浏览和最终确定该文件的内容。

在Synchronize视图的工具栏上有如下一组按钮:Incoming Mode(从CVS中更新)、Outgoing Mode(提交到CVS)、Incoming and Outgoing Mode以及Conflicts Mode。通过使用上述按钮,您可以对同步信息进行过滤。在使用了Incoming Mode按钮后,您会看到有哪些操作正在进行。如果小组中只有您一个人,那么可能只有Outgoing Mode按钮才是您感兴趣的。若要接受所有的传入更改,则使用Synchronize视图工具栏上的Update All Incoming Changes…按钮。若要提交您的所有更改,则使用Synchronize视图工具栏上的Commit All Outgoing Changes…按钮。工具栏操作Pin Current Synchronization允许您对先前同步中所使用的一组资源进行引用。Synchronize视图的工具栏上的这些按钮允许您通过工作集来过滤内容。您可对比较标准进行调整,并可使用Layout菜单在树、压缩文件夹以及提交集(Commit Set)之间进行视图切换。提交集允许您查看资源库更改。这些更改会按照提交者、注释和提交日期来分类显示。在确定传入更改集的更详细信息时,这种分类非常有用。Synchronize视图拥有自己的Preferences对话框。在Synchronize视图的菜单中,您可以打开该Preferences对话框。在Synchronize视图的菜单中,您还可以执行Schedule…操作。该操作允许您按照所选择的某一重复进度来自动执行资源库的同步操作。

图5-7 显示传入更改和传出冲突文件三方比较的Team Synchronizing透视图

1. Synchronize向导

从工作台工具栏(或Synchronize视图菜单栏)的下拉菜单中选择Synchronize…操作后会出现Synchronize向导。在Synchronize向导中,您可以对要与CVS(以及其他那些被允许使用Eclipse小组同步支持的资源库提供程序)进行同步的项目进行选择。如图5-8所示,您可对工作空间、所选资源或者一个工作集进行同步。在Synchronize向导结束后,您会返回到Team Synchronizing透视图。

5.4.9 处理同一文件的并发更新

首先,我们讨论一下一个被建议用来进行修改操作的协议。当在工作空间中使用资源时,您的操作是独立于CVS资源库的。因为发生在资源库中的更改可能是在您不知道的情况下发生的,所以非常重要的一点是,如果还未检查资源库中是否有更新取代了您的更改,那么您一定不要提交任何更改。Team | Update…操作会用资源库中那些取代了您的更改的任何更改来更新项目的本地副本。对于文本文件(包括Java类)来说,Team | Update…操作会自动对任何更改进行合并(从资源库到工作空间),即使这些更改可能造成冲突。在遇到冲突时,合并操作会用特定的CVS标记文本来标识文件中的冲突,以帮助您识别出冲突行。标记文本并不是与任何类型的文件都兼容,例如它可能导致编译错误。

Update…操作是一个非常强大的操作,我们在练习时一定要小心。在下面这个例子中,Pat和Lynn更新了一个简单的文本文件。无需知道它,它们都对以“B”和“C”开始的行进行了更新。标记文本会对冲突的那些行以及引入了冲突的版本号(1.2)进行了标识。对于一个带有众多冲突的复杂Java文件来说,您可能很难解决其中的冲突。

A is for apple

<<<<<<< sample.txt

B is for bird             (updated by pat)

C is for crow             (updated by pat)

=======

B is for bobcat           (updated by lynn)

C is for cow             (updated by lynn)

>>>>>>> 1.2

D is for dog

E is for excellent

F is for farm

G is for goat...

Team | Synchronize with Repository…操作也支持更新,但是该操作不会自动进行更新。在执行该操作后会显示Synchronize视图,并会列出工作空间副本和资源库最新资源之间那些不一致的资源。在Synchronize视图中,您可以对这些差别进行检查,并决定所要采取的操作。由于Team | Synchronize with Repository…操作可使您拥有更多的控制权,所以我们建议您使用该操作来代替Update…操作。

下面总结一下文件并发更新的基本规则:在对工作空间中的文件进行修改之前,您必须用资源库中的所有更改来更新工作空间中的资源。为了安全起见,此时请使用Team | Synchronize with Repository…操作。在Synchronize视图中,您可执行更新操作,还可提交更改,并可协调冲突。

5.4.10 使用CVS的Watch/Edit支持以避免对同一文件的并行更新

CVS的Watch/Edit支持是Eclipse本身就提供的。如果您同意使用CVS的Watch/Edit支持,那么在提交资源时,您和小组其他成员之间就可以避免冲突。在启用了CVS的Watch/Edit支持之后,您的项目小组可以更好地理解在所有具体项目中,当前谁正更新文件。相反,前面所讨论的CVS Annotate视图为您所显示的是先前的更改以及谁做的更改。CVS的Watch/Edit支持是在项目层次上被启用的。如果在Team | CVS >Watch/Edit的首选项设置页面中选中了Configure projects to use Watch/Edit on checkout复选框,那么在项目被检出时,Watch/Edit支持将被自动激活。您也可以通过设置项目的CVS属性在受CVS管理的现有项目上启用Watch/Edit支持。在CVS的Watch/Edit支持被启用时,该项目中的文件处于只读状态。此时,如果您在编辑器中打开了某文件后又试图对该文件进行修改,那么CVS服务器会被询问。在编辑文件时,如果其他人也正在编辑该文件,那么就会出现一个对话框以通知您小组中其他成员也正在编辑该文件(见图5-9)。这时,您可以继续对该文件进行编辑,但是在您提交该文件时需要进行冲突管理。在文件被修改时,检查标记修饰符会被添加到该文件上。

图5-9 显示其他人正在编辑同一文件的对话框

在项目、文件夹以及文件上执行Team | Show Editors操作后会打开CVS Editors视图。CVS Editors视图中列出的是所有正在被其他人更新的资源(见图5-10)。无论是否处于Watch/Edit的控制之下,您在任何项目及项目资源上都可以使用Team | Show Editors操作。但是Team | Show Editors操作只会对启用了Watch/Edit支持的项目资源进行标识。

图5-10 列出了哪个用户正在更新文件夹中文件的CVS Editors视图

您可以使用Team | Edit操作来显式地通知CVS服务器,让CVS服务器知道您想对文件进行更新。您还可以使用Team | Unedit操作来通知CVS服务器,让CVS服务器知道您不想再编辑该文件。这样,您所做的任何更改都会被从CVS资源库中检出。表5-3给出了有关这些操作的信息。在向CVS提交了更改之后,Watch/Edit列表中的资源会被隐式删除掉。

Watch/Edit是一个非常有用的工具。但是该工具的使用需要遵循一些规则,并要注意一些考虑事项。首先,如果要使Watch/Edit功能高效,那么小组中的每个成员都必须在存在潜在冲突的项目中启动Watch/Edit功能。其次,您必须连接到CVS服务器上。如果您没有和CVS服务器相连,并且想更新一个文件,那么您将不得不显式地将该文件的只读状态(从该文件的属性页面中可获得该属性)取消掉。当然,该支持现在是折中的。这是因为,没有任何人知道该更新,而且在提交过程中存在潜在的冲突。如果您删除了一个项目并且该项目资源的Watch/Edit首选项设置没有被启用,那么CVS服务器将不会被通知,并且CVS服务器会继续向外报告您正在对这些资源进行编辑。如果您的小组计划使用Watch/Edit支持,那么明智的做法是小组中所有人都启用被标注为Configure projects to use Watch/Edit on checkout的CVS Watch/Edit首选项设置。

5.4.11 恢复被删除的文件

有时候,在文件被删除并且更改被提交给CVS后,您可能需要恢复所删除的文件。幸运的是,CVS不会将所删除的文件从该文件所在的资源库中移除。您可以使用Team | Restore from Repository操作来恢复所删除的文件。如果被删除的文件在资源库中存在,那么您将看到一个对话框。在该对话框中,您可以选择所要恢复的文件的具体修订版(见图5-11)。而文件的最新修订版则是一个对所删除文件的引用。这是因为文件删除是一个CVS修订操作。

图5-11 显示可恢复的被删除文件的Restore from Repository对话框

当一个文件被恢复到工作空间中的时候,该文件被看作是一个新文件。在提交该文件之前或提交该文件时,必须将该新文件添加到版本控制中。

5.4.12 其他CVS用户界面元素

1. Checkout向导

在New wizard对话框中获得的是CVS向导中的检出项目。通常,您会使用CVS Repositories视图来检出项目。但是,有些CVS资源库是不允许被浏览的。在这种情况下,检出向导可能就比较有用。但是在这种情况下,您必须预先知道该项目的名称。

2. CVS备忘单

若要打开Cheat Sheet Selection对话框,则选择Help | Cheat Sheets…命令。对于CVS任务来说,备忘单用来为分支和合并操作提供帮助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
笔者有幸接触过以下几种常用的配置管理工具:VSS、SVN、Clearcase,在此做一个小小的总结,并Ctrl+C了以前一些网友的对比评论,不一定准确,只是希望通过这些总结对自己和初学者有所帮助。如果想进一步了解这些工具,请baidu和google,如果想深入了解,敬请到图书馆借书并实践。一、 Visual Source Safe( 简称 VSS )VSS是微软的产品,是配置管理的一种很好的入门级的工具。VSS最初的名字叫Source Safe,是一家小公司的产品,92年曾经获了最佳小型管理工具奖,然后立即被微软收购。但是微软收购的只是source safe的Windows版本,在美国还有另外两家公司分别获得了继续开发和销售source safe的Mac版本和Unix版本的许可,在MS买进vss之后,基本上没有对vss进行任何的研发,MS内部自身也不用vss。SourceSafe长得很象早先土气的文件管理器,的确难看。但是难看不碍事,SourceSafe的优点可以用8个字来概括“简单易用,一学就会”,这个优点是它老妈Microsoft遗传下来的,是天生的。虽然SourceSafe并不是免费的,但是在国内人们以接近于零的成本得到它,网上到处可以下载啊。当然Microsoft也不在乎这个小不点的软件,它属于“买大件送小件”的角色。如果你合法地得到Visual Studio,你就得到了免费的SourceSafe。评价如下:易用性:★★★★★易学易用是 VSS 的强项, VSS 采用标准的 windows 操作界面,只要对微软的产品熟悉,就能很快上手。 VSS 的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就可以很快的用到实际的工程当功能:★★★VSS 的配置管理的功能比较基本,提供文件的版本跟踪功能,对于 build 和基线的管理, VSS 的打标签的功能可以提供支持。 VSS 提供 share (共享 ) 、 branch( 分支)和合并( merge) 的功能,对于团队的开发进行支持。 VSS 不提供对流程的管理功能,如对变更的流程进行控制。 VSS 不能提供对异地团队开发的支持。此外 VSS 只能在 windows 平台上运行,不能运行在其他操作系统上。安全性:★★★VSS 的安全性不高,对于 VSS 的用户,可以在文件夹上设置不可读,可读,可读 / 写 , 可完全控制四级权限。但由于 VSS 的文件夹是要完全共享给用户后,用户才能进入,所以用户对 VSS 的文件夹都可以删除。这一点也是 VSS 的一个比较大的缺点。总体成本:★★★★VSS 没有采用对许可证进行收费的方式,只要安装了 VSS ,对用户的数目是没有限制的。因此使用 VSS 的费用是较低的。技术支持:★★★★★由于 VSS 是微软的产品,可以得到稳定的技术支持。二、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本先说说CVSCVS是开源代码的配置管理工具,其源代码和安装文件都可以免费下载。记得在学校读研的时候,学校实验室的代码全部都用CVS管理,为啥?很简单,两个字:免费!它与Eclipse配合,基本上Java的代码编写,代码管理和版本管理都可以“免费”搞定了。SVN(Subversion)是近年来崛起的版本管理工具,被誉为cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。虽然在 2006年时SVN的使用族群仍然远少于传统的CVS,但已经有许多开放源码团体决定将CVS转换为SVN。已经转换使用SVN的包括了 FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono 以及许多团体。许多开发团队换用SVN是因为 Trac、SourceForge、CollabNet、CodeBeamer等专案协同作业软件以及Eclipse、NetBeans等IDE提供SVN的支援整合。 除此之外,一些自由软件开发的协作网如SourceForge.net除了提供CVS外,现在也提供专案开发者使用SVN作为原码管理系统,JavaForge、Google Code以及 BountySource 则以SVN作为官方的源码管理系统。2009年,绝大多数CVS服务已经改用SVN。CVS已经停止维护。易用性 : ★★★★Subversion支持linux和windows,更多是安装在linux下。svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。目前业界评价的SVN易用性正在提高。功能:★★★★SVN 的功能除具备 VSS 的功能外,还具有:它的客户机 / 服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出 (checkout :注 1)的模式避免了通常的因为排它检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样, SVN 也不提供对变更流程的自动管理功能。安全性:★★★★一般来说, SVN 的权限设置单一,无法完成复杂的权限控制;但是 SVN 通过 SVN ROOT 目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。总体成本:★★★★★SVN 是开发源码软件,无需支付购买费用。技术支持:★★★同样因为 SVN 是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。三、 ClearCaseRational公司的ClearCase是软件行业公认的功能最强大、价格最昂贵的配置管理软件。ClearCase主要应用于复杂产品的并行开发、发布和维护,其功能划分为四个范畴:版本控制、工作空间管理(Workspace Management)、构造管理(Build Management)、过程控制(Process Control)。ClearCase通过TCP/IP来连接客户端和服务器。另外,ClearCase拥有的浮动License可以跨越UNIX和 Windows NT平台被共享。ClearCase的功能CVS、SourceSafe强大得多,但是其用户量却远不如CVS、SourceSafe的多。主要原因是:ClearCase价格昂贵,如果没有批量折扣的话,每个License大约5000美元。对于国用户而言,这无疑是天价。用户只有经过几天的培训后(费用同样很昂贵),才能正常使用ClearCase。如果不参加培训的话,用户基本上不可能无师自通。易用性:★★★ClearCase 的安装和维护远比 VSS 复杂,要成为一个合格的 ClearCase 的系统管理员,需要接收专门的培训。 ClearCase 提供命令行和图形界面的操作方式,但从 ClearCase 的图形界面不能实现命令行的所有功能。如果Unix/Linux服务器上安装了Samba服务,可以直接通过Windows下Clearcase的客户端直接访问源代码,相对比较简单。功能:★★★★★ClearCase 提供 VSS, SVN所支持的功能,但不提供变更管理的功能。 Rational 另提供了 ClearQuest 工具提供对变更管理的功能,与 VSS不同, ClearCase 后台的数据库是专有的结构。 ClearCase 对于 windows 和 unix 平台都提供支持。 ClearCase 通过多点复制支持多个服务器和多个点的可扩展性,并擅长设置复杂的开发过程。安全性:★★★★ClearCase 的权限设置功能与 SVN 相比, SVN 有独立的安全管理机制, ClearCase 没有专用的安全性管理机制,依赖于操作系统。总体成本:★★要选用 ClearCase ,需要考虑的费用除购买 license 的费用外,还有必不可少的技术服务费用,没有 Rational 公司的专门的技术服务,很难发挥出 ClearCase 的威力。如现在网上虽有 ClearCase 的破解软件,但尝试应用的公司大多失败的缘故。另外,对于 web 访问的支持,对于变更管理的支持功能都要另行购买相应的软件。技术支持:★★★★★Rational 公司已被 IBM 公司收购,所以有可靠的售后服务保证。四、总结工具对比一览表特性 VSS SVN ClearCase易用性 ★★★★ ★★★ ★★★功能 ★★★ ★★★★ ★★★★★安全性 ★★★ ★★★★ ★★★★总体成本 ★★★★ ★★ ★★★★★技术支持 ★★★★ ★★★ ★★★★★以上几种工具的总结如下: 1. VSS 的使用简便易学,但 VSS 的功能和安全性较弱,且只对 windows 平台进行支持,建议作为项目配置管理的入门时采用的工具;2. SVN 的安全性和版本管理功能较强,可以实现异地开发的支持,但 SVN 安装和使用多采用命令行方式,学习曲线高,同时不提供对变更管理的功能,对于小型团队,可以采用 SVN 进行管理。3. ClearCase 功能完善,安全性好,可以支持复杂的管理,但学习曲线和学习成本高,需要集成 ClearQuest 才能完成完整的配置管理功能。大公司如果采用异地多研发心同时开发的模式,一般推荐使用ClearCase。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值