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 |
执行该操作后会显示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透视图。






