CVS版本控制-冲突解决方法

一直使用MyEclipse进行项目开发,利用CVS进行版本控制,常常会遇到冲突,一直不太了解产生缘由及解决方法,通过网上一番查找资料,终于弄懂了,mark一下!html

              首先是冲突产生的缘由,说来很简单:A、B同时下载服务器上同一文件,A修改完后同步到服务器,此时B也完成修改后,要将文件同步到服务器上,此时服务器和本地文件都发生改变,因此就会产生冲突。java

             解决办法就是人工手动检查错误,将服务器上的改动添加到本地,再将本地的改动同步到服务器,便可完成版本更新。其中要用到一个功能:mark as merged。做用就是忽略冲突,将本地文件直接覆盖掉服务器上的文件。shell

   此处粘上一些我查到的有用的文章,以供查阅!windows

 

ZZ1:http://topic.csdn.net/u/20120616/21/a672a836-ecac-4272-a69b-3b2dfce3829d.html安全

用了mark as merged后,再commit仍是把别人的东西覆盖掉了。服务器

最后,作了实验发现以下问题。
1.有一个test文档。其中,内容是
aaa网络

2.A加上一行:
aaa
bbb并发

3.同时,B也加了一行:
aaa
ccceclipse

4.B commit分布式

5.A 同步test文件,出现红色的双箭头,说明本地和服务器都有更新。

6.A 采用 mark as merged命令。以后,test文件变成灰色的向右箭头,说明A的本地文件中一同步B的变动。

7.A commit

8.最后发现,服务器上的test文件中竟然没有B的内容,只有:
aaa
bbb


结论:此法会覆盖掉服务器上的文件!

 

ZZ2:http://www.blogjava.net/sgsoft/articles/737.html

版本控制工具
    版本控制是程序开发、管理必不可少的工具,特别是在多人协做的团队中,适宜的版本控制工具能够提升开发效率,消除不少有代码版本带来的问题。本文首先列举没有版本控制工具时可能遇到的问题,再对主流版本控制工具作概要介绍,以后对做为Java开发者首选的版本控制工具CVS的历史、功能、概念作详细的介绍;最后在Eclipse+CVS环境中,以CVS使用的一个完整流程为例,介绍如何正确的使用CVS工具。

为何要使用版本控制工具?
若是没有版本控制工具的协助,在开发中咱们常常会遇到下面的一些问题:
1、 代码管理混乱。若是是别人添加或删除一个文件,你很难发现。没有办法对文件代码的修改追查跟踪。甚至出现文件丢失,或新版本代码被同伴无心覆盖等现象。
2、 解决代码冲突困难。当你们同时修改一个公共文件时,解决代码冲突是一件很头疼的事。最原始的办法是手工打开冲突文件,逐行比较,再手工粘贴复制。更高级的作法是使用文件比较工具,但仍省不了繁杂的手工操做,一不当心,甚至会引入新的bug。
3、 在代码整合期间引入深层BUG。例如开发者A写了一个公共函数,B以为正好能够复用;后来A又对这个公共函数进行了修改,添加了新的逻辑,而这个改动的倒是B不想要的。或者是A发现这个公共函数不够用,又新作了一个函数,B却没有及时得到通知。这些,都为深层BUG留下隐患。
4、 没法对代码的拥有者进行权限控制。代码彻底暴露在全部的开发者面前,任何人均可以随意进行增、删、改操做,没法指定明确的人对代码进行负责。特别是产品的开发,这是极其危险的。
5、 项目不一样版本发布困难。特别是对产品的开发,你会频繁的进行版本发布,这时若是没有一个有效的管理产品版本的工具,一切将变得很是艰难。
    上面只是列举了一些没有版本控制系统可能带来的问题,特别是对大型项目和异地协同开发有了一个合适的版本控制工具,它能够有效解决由于代码版本不一样引发的各类问题,让咱们的开发人员能更多的把精力花费在开发上面。而不是每次都花费不少时间进行代码整合和解决版本不一样带来的各类问题。

主流版本控制工具介绍
    如今,有不少优秀的版本控制工具供咱们选择,下面就五种主流的版本控制工具作简单的介绍。
Starteam 
    是一个集合了版本控制、构建管理(Build Management)和缺陷跟踪系统为一体的软件,而且具备强大的图形界面,易学易用;但管理复杂、维护困难。2002年末被Borland公司收购。
PVCS Version Manager
     是美国的MERANT公司软件配置管理工具PVCS 家族中的一个组成部分,它可以实现源代码、可执行文件、应用文件、图形文件和文档的版本管理;它能安全地支持软件并行开发,对多个软件版本的变动进行有效的控制管理。
ClearCase(CC)
    是ROSE构件的一部分,目前最牛的配置管理工具,主要应用于复杂的产品发放、分布式团队合做、并行的开发和维护任务。能够控制word, excel,powerpoint,visio等文件格式,对于不认识的格式能够本身定义一种类型来标识。
Visual SourceSafe(VSS)
    简单易用、方便高效、与Windows操做系统及微软开发工具高度集成。
CVS(Concurrent Versions System)
    是开发源码的并发版本系统,它是目前最流行的面向软件开发人员的源代码版本管理解决方案。它可用于各类平台,包括 Linux 、Unix和 Windows NT/2000/XP等等。
    前面三种是重量级的商业版本控制工具,更适合庞大的团队和项目,而且价格不菲。Visual SourceSafe是微软的产品,固然只能用在windows平台并与微软的开发工具无缝集成。CVS免费开源,而且几乎全部开源项目都是使用CVS进行版本管理,无疑,它是咱们Java开发者最优选择。

CVS的历史、功能、基本概念的介绍

历史
    CVS 诞生于 1986 年,当时做为一组 shell 脚本而出现;1989年3月,Brian Berlinor用C语言从新设计并编写了CVS的代码;1993年先后,Jim Kingdon最终将CVS设计成基于网络的平台,开发者们能从Internet任何地方得到程序源代码。截至目前最新版本是2004年12月13日发布的1.12.11。

功能介绍
1、 代码统一管理,保存全部代码文件更改的历史记录。对代码进行集中统一管理,能够方便查看新增或删除的文件,可以跟踪全部代码改动痕迹。能够随意恢复到之前任意一个历史版本。并避免了由于版本不一样引入的深层BUG。
2、 完善的冲突解决方案,能够方便的解决文件冲突问题,而不须要借助其它的文件比较工具和手工的粘贴复制。
3、 代码权限的管理。能够为不一样的用户设置不一样的权限。能够设置访问用户的密码、只读、修改等权限,并且经过CVS ROOT目录下的脚本,提供了相应功能扩充的接口,不但能够完成精细的权限控制,还能完成更加个性化的功能。
4、 支持方便的版本发布和分支功能。

基本概念
资源库(Repository)
CVS的资源库存储所有的版本控制下的文件copy,一般不允许直接访问,只能经过cvs命令,得到一份本地copy,改动后再check in(commit)回资源库。而资源库一般为与工做目录分离的。CVS经过多种方式访问资源库。每种方法有不一样目录表示形式。
版本(Revision)
每个文件的各个版本都不相同,形如1.1, 1.2.1,通常1.1是该文件的第一个revision,后面的一个将自动增长最右面的一个整数,好比1.2, 1.3, 1.4...有时候会出现1.3.2.2,缘由见后。revision老是偶数个数字。通常状况下将revision看做时CVS本身内部的一个编号,而tag则能够标志用户的特定信息。
标签(Tag)
用符号化的表示方法标志文件特定revision的信息。一般不须要对某一个孤立的文件做tag,而是对全部文件同时做一个tag,之后用户能够仅向特定tag的文件提交或者checkout。另一个做用是在发布软件的时候表示哪些文件及其哪一个版本是可用的;各文件不一样revision能够包括在一个tag中。若是命名一个已存在的tag默认将不会覆盖原来的;
分支(Branch)
当用户修改一个branch时不会对另外的branch产生任何影响。能够在适当的时候经过合并的方法将两个版本合起来;branch老是在当前revision后面加上一个偶数整数(从2开始,到0结束),因此branch老是奇数个数字,好比1.2后面branch为1.2.2,该分支下revision可能为1.2.2.1,1.2.2.2,...
冲突(Conflct)
彻底是纯文本的冲突,不包含逻辑上的矛盾。通常是一份文件,A作了改动,B在A提交以前也作了改动,这样最后谁commit就会出现冲突,须要手工解决冲突再提交。

CVS与eclipse集成开发
  前面对CVS的历史、功能、概论等理论知识作了介绍。下面咱们将使用最流行的Java IDE Eclipse中内置的CVS工具,以一个完整开发流程,介绍实际环境中CVS的正确使用。关于CVS系统的安装,不是本文的内容,您能够从附录的连接中获取安装的介绍资料。

经常使用的CVS控制命令
Check Out(检出)
把源文件从cvs源代码仓库中取出,缺省的版本是最新的版本,你也能够选择指定的版本。在每次更改源代码以前,须要Check Out最新的版本,再起基础之上对源代码进行修改。将代码目录checkout到指定目录下,全部文件都是read-write。
Check In(检入)
把源代码加入到cvs源代码仓库中,每个添加进代码库中的文件的版本是 1.1。之后每次修改文件从新ci之后,此文件的版本递增为1.2 ,1.3.……。在每次对源代码修改以后,须要Check In,提交最新版本的源代码。
Synchronize with Repository(与资源库同步,简称同步)
使本地更改与资源库同步,它会列出本地和资源库之间不一样的全部文件。
Add to Version Control
将新的文件加入到版本控制之中。
Add to .cvsIgnore
将文件设置到版本控制以外,这样该文件或目录中的文件的更改在CVS中不可见,即便同步也没法发现。

CVS正确使用步骤
1、 同步(Synchronize)
就是将本地更改与服务器同步,同步以后能够清晰的看到上一捡出(Check Out)版本以后本地、服务器上的最新改动。这是很是有用的,特别是敏捷开发,强调集体拥有代码。有了同步功能,你能够全局把握项目的代码,能够很方便的跟踪公共模块代码的任何改动。
具体操做:在Eclipse的资源视图(Resource Perspective)或者Java视图(Java Perspective)中,选中要同步的目录,点击右键选择"Synchronize with Repository",以后它将显示同步的视图。以下图:
 
(图1、CVS同步视图)
同步以后,它有四种Mode能够选择,见上图绿色框框里按钮。从作到右分别为:
Incoming Mode:表示修改是来自服务器,对应于更新(update)操做。
Outgoing Mode:表示修改是来自本地,对应提交(commit)操做。
Incoming/ Outgoing Mode:本地和服务器修改都在该模式(Mode)中显示。
Conflicts Mode:显示本地和服务器修改的冲突文件。
2、 更新(update)
比较简单,选择Incoming Mode,再选中要更新的文件,右键选择update操做。
3、 解决冲突并合并(solve conflct and merge)
若是有冲突文件,冲突文件不能更新。你必须先解决冲突再操做。选中冲突的文件,再点右键选择"Open in Compare Editor",用比较工具打开该文件。以下图: 

(图2、CVS比较器视图)

比较器(Compare)视图,左边版本底的是本地文件(Local File),右边是远程服务器文件(Remote File)。使用"Select Next Change"按钮(绿框中的第一箭头向下按钮),逐一查看不一样点。若是不一样点标识为黑色框框,则不用管它。若是是蓝色框框,则须要手工调整。如上图,不一样点是蓝色框框,将鼠标放到两个不一样点的中间小方框中,则凸出一个向右的按钮,并显示提示信息"Copy Current Change from Right to Left",意思是将右边服务器的不一样点覆盖到左边的本地文件。点中此按钮。重复这样的操做,将全部服务器上的更改拷贝到本地。
若是有一行代码,本地和服务器都同时作了修改。这时,修改点则显示红色框框。这时,你就必须手工作正确的修改。所有修改完成,保存本地文件。
此时,若是修改点没有了蓝色的框框,就能够开始作合并(merge)操做了。操做也很简单,选择该文件,点击右键,选择"Mark as merged"。
注意:必须确保没有蓝色框框,即彻底拷贝了服务器的修改才能够作合并(merge)操做,不然会覆盖服务器上的代码。
4、 提交(commit)
更新服务器代码,解决冲突以后,首先要查看本地文件修改以后是否有错误。若是有,固然首先解决错误,再提交。

附录:
http://www.8848software.com/scmchina/scmtools.htm 由不少版本控制工具的文档连接。
http://www.perforce.com/perforce/reviews.html Infrastructure Group对Perforce 和Clearcase, CVS, PVCS,Visual SourceSafe (VSS)几种CM工具进行了定量和定性的比较. 对于定性的比较,内容涉及工具支持的方法和环境;对于定量的比较,包括在不一样的项目规模上,执行不一样的活动所须要的时间。

---------------------------

讨论摘录:

单就功能来讲,Subversion 比起 CVS 仍是要多了一些东西的,有些仍是不错的;至于“市场”,仍是要看需求,如今已经有一些开元软件在使用 Subversion 了。

以为 WinCVS 很差用的,能够试试 TortoiseCVS,这是一个彻底与资源管理器集成的 CVS 工具,比较符合 Windows 使用者的思路,很容易上手;主页是http://tortoisecvs.sourceforge.net。

对于 Subversion,也有类似的工具 TortoiseSVN,使用方法几乎彻底相同,主页是http://tortoisesvn.tigris.org。

 

一样,网站上也提供了其余关于软件配置管理工具的部分学习资料下载: 
参考:http://www.askguoyu.com 

 

 

转自:https://blog.csdn.net/herb777/article/details/7696332

做者:herb777 

相关文章
相关标签/搜索