cvs功能.docx
《cvs功能.docx》由会员分享,可在线阅读,更多相关《cvs功能.docx(23页珍藏版)》请在冰点文库上搜索。
cvs功能
现在,您已经对CVS有了一个基本的理解。
接下来,我们将讨论Eclipse是如何为CVS使用者提供帮助的。
在对其进行讨论之前,先略为详细地看一下Eclipse的CVS用户界面。
在开始之前,Eclipse的CVS用户界面是毫无价值的。
这是因为,与Eclipse中的很多操作相似,大多数的CVS资源库访问操作都在后台运行,这些操作不会对其他操作造成妨碍。
诸如检出、提交、同步等可能需要长时间运行的操作并不会对您所要完成的其他任务造成妨碍。
在下面所给出的这个简短列表中,列出了在Eclipse用户界面中使用CVS时会碰到的最常见任务。
在练习5中,您会实践所有这些任务。
∙定义到CVS资源库的连接。
∙浏览CVS资源库。
∙将新的工作空间项目定义到CVS中。
∙从CVS中检出已有项目。
∙将工作空间中的更改提交给CVS。
∙使用CVS中的最新版本来更新自己的工作空间项目。
∙在合适的里程碑处进行版本设置。
∙用资源库中的资源来比较或替换工作空间中的资源。
5.4.1CVSRepositoryExploring透视图:
资源库主页
如图5-1所示的CVSRepositoryExploring透视图是在Eclipse中使用CVS的大本营。
在该透视图中含有CVSRepositories视图、CVSResourceHistory视图以及编辑器区域。
在CVSRepositories视图中会显示出您的工作空间所知道的CVS资源库。
而在CVSResourceHistory视图中所显示的则是受CVS控制的任何已知文件的修改历史记录。
在CVSRepositoryExploring透视图中,您可以建立与CVS服务器的连接。
5.4.2CVSRepositories视图
CVSRepositories视图扮演着资源库浏览器的角色。
在CVSRepositories视图中,您可以对资源库中存在的项目进行选择,并可将这些项目检出到工作空间中。
如图5-1所示,CVSRepositories视图位于CVSRepositoryExploring透视图的左边窗格中。
通过使用快捷菜单New|RepositoryLocation...或选择AddCVSRepository
命令,您可以在自己的工作空间中定义CVS资源库的位置。
Eclipse支持各种类型的CVS连接(见图5-2)。
在CVSRepositories视图中,您可以定义多个CVS资源库。
在浏览资源库时,您可以看到资源库中的内容。
如图5-1所示,这些内容包括HEAD、Branches、versions目录中的项目以及Dates条目。
您可展开目录树或使用工具栏中的GoInto
和Back
操作来往下一直看到具体文件。
在工具栏上有一个RefreshView
操作,由于CVSRepositories视图不会与资源库中的内容更改自动保持一致,所以在做任何重要操作之前,您可能要使用RefreshView
按钮来刷新CVSRepositories视图。
出于方便的考虑,如果您从Resource透视图中打开了CVSRepositories视图,那么该视图将作为一个选项卡式视图显示在Navigator透视图的旁边。
在CVSRepositories视图中,一个最常见的任务是从资源库中将项目检出到您的工作空间中。
要完成上述任务,请先在Branches、HEAD或Versions下选择一个项目,然后再在单击鼠标右键后所出现的快捷菜单中选择CheckOut命令。
图5-1CVSRepositoryExploring透视图
图5-2在工作空间中定义新的CVS资源库位置
在第一次展开CVSRepositories视图中的Branches目录时,您会看到该目录中没有任何内容。
在使用了快捷菜单操作RefreshBranches…后会出现RefreshBranches对话框(见图5-3)。
在RefreshBranches对话框中,您可以为一个或多个资源库项目执行CVS中的分支标记检索请求。
CVS资源库中可以包含大量分支。
而您可能仅对其中的部分分支感兴趣。
在RefreshBranches对话框中,您可以对要进行分支标记信息检索的项目进行选择。
在表5-1所示的参考列表中,列出了CVSRepositories视图中的所有可用的快捷菜单操作。
其中有些操作依赖于您在图5-3的第3个栏目中的选择。
一开始,您可能需要使用以下这些操作:
New|RepositoryLocation…、CheckOut…、Comparewith…以及ShowinResourceHistory。
现在,您不必理解这些操作,它们仅为您提供一个参考。
图5-3RefreshBranches对话框
表5-1在CVSRepositories视图中可使用的上下文操作
操作
描述
从快捷菜单中可获得该命令
AddtoBranch
List…
将一个项目(但不包括该项目的内容)添加至一个新的或已经存在的分支上。
该操作可代替Team|Branch操作。
对于那些将在一个分支中单独开发的新项目来说,该操作是比较有用的
被选择的项目
CheckOut
把从资源库中所选择的内容复制到自己的工作空间中。
而且文件夹可被检出,同时该文件夹与项目的一致性会得到维护。
对于含有独立部分的大型项目来说,该操作非常有用
被选择的项目,以及在Branches、HEAD或Versions下所选择的项目文件夹
CheckOutAs…
把从资源库中所选择的内容复制到自己的工作空间中,并以另外一个名称来命名。
在对所做的更改进行提交时,该项目保持它在CVS中的初始一致性。
当需要在工作空间中同时拥有某一项目的多个实例时,该操作非常有用
被选择的项目,以及在Branches、HEAD或Versions下所选择的项目文件夹
(续表)
操作
描述
从快捷菜单中可获得该命令
Compare
在选择了两个资源库文件后,执行该操作会显示出Compare视图
两个被选择的资源库
CompareWith…
该操作会打开ComparewithBranchorVerson对话框,并允许您将所选资源与Branches、HEAD或Versions中的资源进行比较
被选择的资源
ConfigureBranchesand
Versions…
执行该操作后将显示出一个对话框。
在所显示的对话框中会显示出资源中的分支或版本标记。
而对话框中所显示的那些标记会显示在CVSRepositories视图中
各种对象
CopytoClipboard
将连接字符串复制到写字板上。
例如:
pserver:
anonymous@dev.eclipse.org:
/home/eclipse
被选择的资源库
Discardlocation
从CVSRepositories视图中删除所选资源库的位置定义
被选择的资源库
New|DateTag…
执行该操作后会显示出一个对话框以创建新的日期标记
被选择的资源库,在CVSRepositories视图中所选择的Dates条目
New|RepositoryLocation…
执行该操作后将显示出一个对话框以定义新的CVS资源库位置。
另外还可获得一个工具栏图标
任何对象
Open
执行该操作后会在编辑器中打开所选文件的最新版本
被选择的文件
Properties
显示所选资源库的属性及其连接信息
被选择的资源库
RefreshBranches…
执行该操作后将显示出一个对话框以允许您发现一个或多个项目的分支
在CVSRepositories视图中所选择的Branches条目,被选择(或没有被选择)的资源库位置
RefreshView
使用资源库的当前信息来刷新CVSRepositories视图
各种对象
Remove
将所选的日期标记从CVSRepositories视图删除掉
被选择的日期标记
ShowAnnotation
该操作会为所选文件显示CVSAnnotate视图
被选择的文件
ShowInResourceHistory
该操作会在CVSResourceHistory视图中显示所选文件的版本历史信息
被选择的文件
TagAsVersion…
将一个版本标记应用到所选的资源及其子资源上
被选择的资源
TagWith
Existing…
该操作会将一已有的资源库版本或分支标记应用到所选的资源上。
这是一个比较特殊的操作。
有关何时使用该操作的更多信息请参见联机帮助中的MovingVersionTags专题
被选择的资源
5.4.3CVSAnnotate视图
CVSAnnotate视图与CVSRepositoryExploring透视图中的CVSRepositories视图使用的是同一界面空间。
CVSAnnotate视图用来标识各版本文件中所添加的新行以及被更改过的行。
CVSAnnotate视图还会指出做出这次修改的是谁。
现在您知道是谁做出了这些难以解释的更新,或者是谁应该对这些难以解释的更新负责。
对于所选择的任何版本来说,文件中所添加的新行会在编辑器中突出显示(见图5-4)。
若要打开CVSAnnotate视图,则从CVSRepositories视图、CVSResourceHistory视图的快捷菜单Team中选择ShowAnnotation操作。
打开CVSAnnotate视图的一种比较方便的方法是从Navigator透视图或PackageExplorer视图中所显示的某一个文件上选择Team|ShowAnnotation操作。
在打开CVSRepositoryExploring透视图时会打开CVSAnnotate视图,CVSResourceHistory视图,并且在编辑器中所打开的文件的版本是最新的。
CVSAnnotate视图中的选择操作会将编辑器复位到被更新的代码行,并且相应的版本会在CVSResourceHistory视图中突出显示出来。
相反,如果在编辑器中选择了一行代码,那么在CVSRepositoryExploring透视图的那些视图中就会适当地对所更改的对象进行突出显示。
现在您就可以非常容易地对任何文本文件的、详细的更改历史信息进行检查。
图5-4CVSRepositoryExploring透视图中的CVSAnnotate视图
5.4.4CVSResourceHistory视图
CVSResourceHistory视图可显示某一具体文件的所有版本的详细信息(见图5-5)。
CVSResourceHistory视图是CVSRepositoryExploring透视图的一部分。
在CVSRepositories视图中先选择一个文件,然后再在单击右键所出现的快捷菜单中选择ShowinResourceHistory命令,这样您就可以看到该文件的历史版本信息。
在受CVS控制的项目上单击鼠标右键后所出现的Team快捷菜单项中也有ShowinResourceHistory命令。
作为一种查看文件历史的快速方法,您可以将受CVS控制的工作空间中的某一文件拖放到CVSResourceHistory视图以直接查看该文件的历史信息。
图5-5CVSResourceHistory视图
对于任何被选择的修订版本来说,与该修订版本相关的分支和版本标记,连同该版本的文件被提交到资源库时所提供的注释,都会一起显示在CVSResourceHistory视图的底部(见图5-5)。
通过在CVSResourceHistory视图的下拉菜单中进行相应选择,我们可以隐藏该视图中的“Tags”项和“Comment”项。
文件的历史记录可能比较长,这时,您可以使用CVSResourceHistory视图工具栏上的FilterHistory
按钮来过滤CVSResourceHistory视图。
也可以根据作者、注释值、日期变化等来对CVSResourceHistory视图中的显示内容进行过滤。
CVSResourceHistory视图工具栏上的LinkwithEditor操作
会使CVSResourceHistory视图与当前活动编辑器(仅对CVS控制之下的文件)保持同步。
对于在CVSResourceHistory视图中被选择的那些版本来说,您对它们可以执行的操作是依赖于资源是否已被复制到工作空间而发生变化的。
这些操作被列在表5-2中。
表5-2CVSResourceHistory视图中的操作
操作
描述
Compare
该操作会对所选的两个版本进行相互比较
GetContents
该操作会用所选版本的内容来替换该资源的本地工作副本中的内容
GetStickyRevision
该操作会将资源的本地工作副本还原为一个先前版本。
本地副本会作为资源库修订版,并会保留相同的版本标记。
需要指出的是,只有在对CVS非常熟悉的情况下,您才可以使用该操作。
该操作的后果之一是,除非“stickyrevision”标记被移走(直接使用CVS命令),否则您不能提交任何进一步的修改。
当然,您可使用ReplaceWith|LatestfromRepository操作返回到原版本。
通常,除非您是一个熟练的CVS用户,否则您可能不会对“stickyrevision”标记感兴趣
Open
该操作会在编辑器中打开所选的修订版文件。
这时,您是不能对该版本文件作出任何更改的
(续表)
操作
描述
RefreshView
该操作会用CVS资源库中的内容来更新CVSResourceHistory视图
ShowAnnotation
该操作会使Eclipe切换到CVSRepositoryExploring透视图,并使得CVSAnnotate视图变为当前焦点以显示出所选文件的注释
TagwithExisting…
该操作会将已有的资源库版本或分支标记应用到所选的资源上。
该操作是一个特殊的操作。
请查看联机帮助中的MovingVersionTags专题以获得何时使用该操作的详细信息
5.4.5查看CVS命令
EclipseConsole视图可显示出CVS与Eclipse之间的所有的命令和响应;在您碰到问题的时候,该视图是非常有用的。
在EclipseConsole视图中还显示了所发布的供用户使用的任何EclipseCVS操作的所有CVS命令。
在Team|CVS|Console首选项页面中,您可以对该控制台的外观和行为进行配置。
5.4.6CVS是如何管理工作空间中项目的
图5-6显示了PackageExplorer视图中一个处在CVS控制之下的项目。
通过观察图标上的标记修饰符以及附加的文字信息,您可以很明显地看出这一点。
只有在启用了Workbench|LabelDecorations首选项设置后,Eclipse才会在PackageExplorer视图中显示附加文字信息。
对于那些受版本控制所有资源来说,在它们的资源图标上都有一个很小的磁盘标志修饰符
。
对于那些CVS所不知道的、被添加到项目中的文件来说,在这些文件的图标中也有一个很小的标志修饰符
。
在如图5-6所示的PackageExplorer视图中,紧接着项目名后面的是该项目所属CVS资源库服务器的名称(位于方括号中)。
如果该项目是被作为一个分支部分来使用的,那么该分支的名称也会被包含在方括号中。
文本修饰符>表明本地资源是一个传出更改(outgoingchange),这就意味着该本地资源已经在本地修改过,并与CVS中相应内容不一致。
PackageExplorer视图中受CVS控制的文件夹(直至项目文件夹)也具有这个特征。
资源名后面的圆括号中所显示的文本表示的是该资源的文件格式(ASCII格式或二进制格式)。
我们知道,对于ASCII文件来说,在CVS文件实例和本地文件实例之间的并行修改可被合并。
而二进制文件只能被替换。
图5-6LabelDecorations首选项被启用时受CVS控制的项目
在Team|CVS|LabelDecorations首选项页面中,您可以对CVS标签修饰的表示和规则进行修改。
5.4.7在Team快捷菜单中可获得的CVS操作
Team菜单可从任何工作空间资源的快捷菜单中获得。
有几个CVS操作是与Team菜单相关的。
我们将对使用CVS进行工作维护中最常用的操作进行总结。
Team菜单下的具体子菜单随着所选择的是否是一个项目而发生变化。
只有在项目没有被CVS或任何其他资源库管理时,所选择的项目才会有一个ShareProject…操作。
表5-3所提供的是一个所有CVS小组操作的参考列表。
其中有些操作可能是您不熟悉的。
我们将在本章后面对这些操作进行讨论。
通常情况下,您最常用的操作是ShareProject…、SynchronizewithRepository…、Update…以及Commit…。
ShareProject操作是一个允许您将项目加到CVS中的综合性向导。
从定义CVS资源库连接到提交项目资源之间的每一个步骤都包括在该向导中。
表5-3Team菜单中的CVS操作
操作
描述
Addto.cvsignore…
该操作会将所选的项目文件排除在CVS管理之外。
这些被排除的文件不会出现在Synchronize视图之中,也不会被提交给CVS资源库。
CVS在您的项目中维护了一个名为.cvsignore的文件。
在该文件中会标识出那些被排除的文件实例。
一开始,.cvsignore文件是不存在的;在该操作第一次执行时,才会创建.cvsignore文件。
您必须将.cvsignore文件添加到版本控制中,并在CVS中维护该文件
AddtoVersionControl
该操作会将所选文件置于CVS控制之下。
典型情况下,在项目中创建新文件时会使用该操作。
如果您没有将资源显式地添加到版本控制中,那么在执行提交操作时,Eclipse会对您作出提示
ApplyPatch…
该操作将使用由CreatePatch操作所创建的补丁文件来修补程序
Branch…
该操作会创建一个分支。
这样,项目(或所选资源)可独立于其他开发过程而被修改
ChangeASCII/Binary
Property…
执行该操作后会显示SetKeywordSubstitution向导。
该向导允许您为所选文件选择期望的CVS关键字替换模式。
它对CVS如何解释ASCII或二进制文件进行了定义
Commit…
如果没有冲突发生,该操作会使用您的本地更改来更新CVS资源库,并会提示您给出一个注释。
如果执行该操作时所选择的操作对象是一个项目或文件夹,那么项目或文件夹中的所有被修改资源都将提交到CVS中。
如果CVS中的相应文件取代了所要提交的文件,那么Commit…操作将失败
CreatePatch…
该操作会基于本地资源和CVS之间的不同而创建一个补丁文件。
其他人可共享该补丁文件。
这就允许在资源库之外共享您的工作
Disconnect…
该操作会在所选工作空间项目中删除所有CVS连接信息
(续表)
操作
描述
Edit
该操作只可用于那些启用了Watch/Edit(可在项目的CVS属性页面或CVS首选项设置中启用该功能)的项目。
该操作会通知CVS服务器,让它知道您正在更新该文件。
如果有其他人(一个或多个)正在编辑该文件,那么您将被提示,以就是否继续该操作作出决定。
此时,您可忽略该提示并对文件进行修改。
但是,在您试图对修改进行提交时可能会碰到冲突。
如果您只是想先打开所要编辑的文件,那么该文件会被打开。
但是在试图对该文件进行修改时,您会得到相同的提示。
如果要使用外部编辑器,那么您首先必须要做的是取消该文件的只读状态,然后再使用外部编辑器打开该文件。
在后面,我们会对该操作继续进行讨论
Merge…
该操作会将某一具体分支中的修改合并回该分支之前的代码库中
Restorefrom
Repository…
对于那些被删除的项目文件来说,如果它们仍存在于项目中,并允许您将它们恢复回原工作空间,则执行该操作后会列出这些被删除的文件。
在本章后面,我们将会对该操作进行详细讨论
ShareProject…
只有项目才能使用该操作。
而且,只有在那些不受资源库管理的项目上才可以看到该操作。
执行该操作后会显示向导。
在该向导中,您可以完成的任务有:
将项目与一个可以使用的资源库相关联,以及提交项目资源。
其他资源库提供程序也可能会使用该操作
ShowAnnotation
执行该操作后将切换到CVSRepositoryExploring透视图,并会将焦点集中到CVSAnnotate视图以显示出所选文件的注释
ShowEditors
该操作适用于那些启用了Watch/Edit(可在项目的CVS属性页面或CVS首选项设置中启用该功能)的项目中的文件夹和文件。
在执行该操作后会打开CVS编辑器视图。
在该视图中会标识出其他正在编辑该文件或该文件夹中内容的用户。
只有那些启用了Watch/Edit的项目才可能显示在CVS编辑器视图中
ShowinRepository
History
该操作为所选资源显示CVSRepositoryHistory视图
Synchronizewith
Repository…
该操作会将所选择的文件与CVS资源库中的对应文件进行比较,并切换到TeamSynchronizing透视图。
比较后所发现的任何差异都会显示在Synchronize视图中。
对于项目或文件夹来说,在执行该操作时,它们里面所包含的全部资源都将与CVS中的对应资源进行比较。
而那些与CVS中对应资源相比发生了变化的资源会被显示在Synchronize视图中。
在您检查所有更改、与资源库实例进行比较,以及解决冲突时,这是一种最安全的CVS使用方法
TagasVersion…
该操作会为所选项目、文件夹(或文件)以及所有的子文件资源的所有CVS实例添加版本标志。
您也可以在CVSRepositories视图中进行版本标识
(续表)
操作
描述
Unedit
该操作只可用于那些启用了Watch/Edit(可在项目的CVS属性页面或CVS首选项设置中启用该功能)的项目文件。
该操作会将您从当前正在编辑某一文件的那个用户列表中删除掉。
执行该操作后,您会从当前活动用户列表中被删除,并且所做的任何更改都会被取消,而所编辑的文件会恢复到执行任何更新之前的内容。
在向CVS提交文件时,如果工作空间副本与服务器副本完全相同,那么Unedit操作会被隐式调用。
在本章后面部分,我们还将对该操作进行讨论
Update…
该操作会使用CVS中所有最新版本来更新本地资源。
CVS中的更新将与本地资源(二进制文件除外)进行合并。
建议您在使用Commit…操作前执行Update…操作。
如果其他人在您的最近一次更新后又进行了提交操作,那么您的提交操作将会失败。
建议您用SynchronizewithRepository…操作来代替Update…操作
5.4.8TeamSynchronizing透视图和Synchronize向导
TeamSynchronizing透视图是您对工作空间与CVS(其他资源库提供程序可被集成到TeamSynchro