//原文地址:http://hi.baidu.com/xublog/blog/item/6d090c22ffe227f5d6cae22b.html
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 | 执行该操作后会显示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透视图。