基本概念 CVS正确使用步骤 比较器(CompareQ视图,左边版本底的是本地文ӞLocal FileQ,双是远E服务器文gQRemote FileQ。?Select Next Change"按钮Q绿框中的第一头向下按钮Q,逐一查看不同炏V如果不同点标识为黑色框框,则不用管它。如果是蓝色框框Q则需要手工调整。如上图Q不同点是蓝色框框,鼠标放C个不同点的中间小Ҏ(gu)中,则凸Z个向右的按钮Qƈ昄提示信息"Copy Current Change from Right to Left"Q意思是右Ҏ(gu)务器的不同点覆盖到左边的本地文g。点中此按钮。重复这L(fng)操作Q将所有服务器上的更改拯到本地?span class="Apple-converted-space">
资源库(RepositoryQ?/strong>
CVS的资源库存储全部的版本控制下的文件copyQ通常不容许直接访问,只能通过cvs命o(h)Q获得一份本地copyQ改动后再check inQcommitQ回资源库。而资源库通常Z工作目录分离的。CVS通过多种方式讉K资源库。每U方法有不同目录表示形式?span class="Apple-converted-space">
版本QRevisionQ?/strong>
每一个文件的各个版本都不相同QŞ?.1, 1.2.1,一?.1是该文g的第一个revisionQ后面的一个将自动增加最右面的一个整敎ͼ比如1.2, 1.3, 1.4...有时候会(x)出现1.3.2.2Q原因见后。revisionL偶数个数字。一般情况下revision看作时CVS自己内部的一个编P而tag则可以标志用L(fng)特定信息?span class="Apple-converted-space">
标签QTagQ?/strong>
用符号化的表C方法标志文件特定revision的信息。通常不需要对某一个孤立的文g作tagQ而是Ҏ(gu)有文件同时作一个tagQ以后用户可以仅向特定tag的文件提交或者checkout。另外一个作用是在发布Y件的时候表C哪些文件及(qing)其哪个版本是可用的;各文件不同revision可以包括在一个tag中。如果命名一个已存在的tag默认不?x)覆盖原来的Q?span class="Apple-converted-space">
分支QBranchQ?span class="Apple-converted-space">
当用户修改一个branch时不?x)对另外的branch产生M影响。可以在适当的时候通过合ƈ的方法将两个版本合v来;branchL在当前revision后面加上一个偶数整敎ͼ?开始,?l束Q,所以branchL奇数个数字,比如1.2后面branch?.2.2Q该分支下revision可能?.2.2.1,1.2.2.2,...
冲突QConflctQ?span class="Apple-converted-space">
完全是纯文本的冲H,不包含逻辑上的矛盾。一般是一份文ӞA做了改动QB在A提交之前也做了改动,q样最后谁commit׃(x)出现冲突Q需要手工解军_H再提交?span class="Apple-converted-space">
CVS与eclipse集成开?/strong>
前面对CVS的历双Ӏ功能、概论等理论知识做了介绍。下面我们将使用最行的Java IDE Eclipse中内|的CVS工具Q以一个完整开发流E,介绍实际环境中CVS的正用。关于CVSpȝ的安装,不是本文的内容,(zhn)可以从附录的链接中获取安装的介l资料?span class="Apple-converted-space">
常用的CVS控制命o(h)
Check OutQ检出)
把源文g从cvs源代码仓库中取出Q缺省的版本是最新的版本Q你也可以选择指定的版本。在每次更改源代码之前,需要Check Out最新的版本Q再起基之上Ҏ(gu)代码q行修改。将代码目录checkout到指定目录下Q所有文仉是read-write?span class="Apple-converted-space">
Check InQ检入)
把源代码加入到cvs源代码仓库中Q每一个添加进代码库中的文件的版本?1.1。以后每ơ修Ҏ(gu)仉新ci以后Q此文g的版本递增?.2 Q?.3.……。在每次Ҏ(gu)代码修改之后Q需要Check InQ提交最新版本的源代码?span class="Apple-converted-space">
Synchronize with Repository(与资源库同步Q简U同?
使本地更改与资源库同步,它会(x)列出本地和资源库之间不同的所有文件?span class="Apple-converted-space">
Add to Version Control
新的文件加入到版本控制之中?span class="Apple-converted-space">
Add to .cvsIgnore
文件设|到版本控制之外Q这栯文g或目录中的文件的更改在CVS中不可见Q即使同步也无法发现?/p>
一?nbsp;同步QSynchronizeQ?/strong>
是本地更改与服务器同步,同步之后可以清晰的看C一捡出QCheck OutQ版本之后本地、服务器上的最新改动。这是非常有用的Q特别是敏捷开发,集体拥有代码。有了同步功能,你可以全局把握目的代码,可以很方便的跟踪公共模块代码的Q何改动?span class="Apple-converted-space">
具体操作Q在Eclipse的资源视图(Resource PerspectiveQ或者Java视图QJava PerspectiveQ中Q选中要同步的目录Q点d键选择"Synchronize with Repository",之后它将昄同步的视图。如下图Q?span class="Apple-converted-space">
(图一、CVS同步视图)
同步之后Q它有四UMode可以选择Q见上图l色框框里按钮。从做到叛_别ؓ(f)Q?span class="Apple-converted-space">
Incoming ModeQ表CZҎ(gu)来自服务器,对应于更斎ͼupdateQ操作?span class="Apple-converted-space">
Outgoing ModeQ表CZҎ(gu)来自本地Q对应提交(commitQ操作?span class="Apple-converted-space">
Incoming/ Outgoing ModeQ本地和服务器修攚w在该模式QModeQ中昄?span class="Apple-converted-space">
Conflicts ModeQ显C本地和服务器修改的冲突文g?span class="Apple-converted-space">
二?nbsp;更新QupdateQ?span class="Apple-converted-space">
比较单,选择Incoming ModeQ再选中要更新的文gQ右键选择update操作?span class="Apple-converted-space">
三?nbsp;解决冲突q合q?solve conflct and merge)
如果有冲H文Ӟ冲突文g不能更新。你必须先解军_H再操作。选中冲突的文Ӟ再点右键选择"Open in Compare Editor"Q用比较工具打开该文件。如下图Q?span class="Apple-converted-space">
Q图二、CVS比较器视图)
如果有一行代码,本地和服务器都同时做了修攏V这Ӟ修改点则昄U色框框。这Ӟ你就必须手工做正的修改。全部修改完成,保存本地文g?span class="Apple-converted-space">
此时Q如果修改点没有了蓝色的框框Q就可以开始做合ƈQmergeQ操作了。操作也很简单,选择该文Ӟ点击右键Q选择"Mark as merged"?span class="Apple-converted-space">
注意Q必ȝ保没有蓝色框框,卛_全拷贝了服务器的修改才可以做合ƈQmergeQ操作,否则?x)覆盖服务器上的代码?span class="Apple-converted-space">
四?nbsp;提交QcommitQ?span class="Apple-converted-space">
更新服务器代码,解决冲突之后Q首先要查看本地文g修改之后是否有错误。如果有Q当焉先解决错误,再提交?span class="Apple-converted-space">
]]>