【IT168 技术文章】
版本控制是程序开发、管理必不可少的工具,特别是在多人协作的团队中,适宜的版本控制工具可以提高开发效率,消除很多有代码版本带来的问题。本文首先列举没有版本控制工具时可能遇到的问题,再对主流版本控制工具做概要介绍,之后对作为Java开发者首选的版本控制工具CVS的历史、功能、概念做详细的介绍;最后在Eclipse+CVS环境中,以CVS使用的一个完整流程为例,介绍如何正确的使用CVS工具。
为什么要使用版本控制工具?
如果没有版本控制工具的协助,在开发中我们经常会遇到下面的一些问题:
一、 代码管理混乱。如果是别人添加或删除一个文件,你很难发现。没有办法对文件代码的修改追查跟踪。甚至出现文件丢失,或新版本代码被同伴无意覆盖等现象。
二、 解决代码冲突困难。当大家同时修改一个公共文件时,解决代码冲突是一件很头疼的事。最原始的办法是手工打开冲突文件,逐行比较,再手工粘贴复制。更高级的做法是使用文件比较工具,但仍省不了繁杂的手工操作,一不小心,甚至会引入新的bug。
三、 在代码整合期间引入深层BUG。例如开发者A写了一个公共函数,B觉得正好可以复用;后来A又对这个公共函数进行了修改,添加了新的逻辑,而这个改动的却是B不想要的。或者是A发现这个公共函数不够用,又新做了一个函数,B却没有及时获得通知。这些,都为深层BUG留下隐患。
四、 无法对代码的拥有者进行权限控制。代码完全暴露在所有的开发者面前,任何人都可以随意进行增、删、改操作,无法指定明确的人对代码进行负责。特别是产品的开发,这是极其危险的。
五、 项目不同版本发布困难。特别是对产品的开发,你会频繁的进行版本发布,这时如果没有一个有效的管理产品版本的工具,一切将变得非常艰难。
上面只是列举了一些没有版本控制系统可能带来的问题,特别是对大型项目和异地协同开发有了一个合适的版本控制工具,它可以有效解决因为代码版本不同引起的各种问题,让我们的开发人员能更多的把精力花费在开发上面。而不是每次都花费很多时间进行代码整合和解决版本不同带来的各种问题。
主流版本控制工具介绍
现在,有很多优秀的版本控制工具供我们选择,下面就五种主流的版本控制工具做简单的介绍。
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。
功能介绍
一、 代码统一管理,保存所有代码文件更改的历史记录。对代码进行集中统一管理,可以方便查看新增或删除的文件,能够跟踪所有代码改动痕迹。可以随意恢复到以前任意一个历史版本。并避免了因为版本不同引入的深层BUG。
二、 完善的冲突解决方案,可以方便的解决文件冲突问题,而不需要借助其它的文件比较工具和手工的粘贴复制。
三、 代码权限的管理。可以为不同的用户设置不同的权限。可以设置访问用户的密码、只读、修改等权限,而且通过CVS ROOT目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。