版本管理器的学习总结
在软件工程不断发展的过程中,各种各样的软件开发方法,技术和工具也在发展,其中当然也包括版本控制工具.下面就简单探讨一下版本控制工具的发展及各自的功能特点,希望对公司选择版本控制工具的时候有参考价值.
版本控制工具的发展大概经历了3代,从开始的使用锁的第一代,到集中式的第二代,再到现在的分布式的第三代.
第一代版本控制工具使用锁的机制,一次只能一个人修改一个文件,并不支持并行开发.典型例子是RCS,SCCS.
第二代版本控制工具是集中式的,支持并行开发,一次可以修改很多文件,但是有一个很大的限制是必须在提交前合并,如果有冲突的话,典型例子是CVS, Subversion, SourceSafe.
第三代版本控制工具是分布式的,它没有集中式提交前合并的限制,主要在2000年以后随着开源软件的发展而发展起来,不断在发展壮大,速度也快,典型例子是Bazaar, Git, Mercurial.
下面表格是3代版本控制工具的比较:
代 | 网络 | 操作 | 并行性 | 模式 | 典型例子 |
1 | 无 | 一次一个文件 | 锁 | 无 | RCS, SCCS |
2 | 集中式 | 多个文件 | 提交前合并 | 直线式 | CVS, SourceSafe, Subversion |
3 | 分布式 | 变更集 | 先提交再合并 | DAG | Bazaar,Git,Mercurial |
另外简单探讨一下我熟悉的版本控制工具.
当然提起版本控制工具,就不能不谈Clearcase,它提供了强大的版本控制,并行开发,多地同步,安全控制是靠操作系统的权限管理的,缺点就是公司需要根据自己的流程开发集成的脚本和触发器等工具,而且各个公司的工具也不统一.UCM在Clearcase的基础上,基于流的概念实现了统一,而且支持变更集的概念,大大提高了效率.最近IBM的Rational又针对这几年分布式版本控制工具的特点推出了RTC,目的是在集中式的存储库的方式下,体现出分布式版本控制工具的大部分优点,如支持个人工作环境,通过锁定的方式支持希不希望并行修改,支持分布式工作流.当然IBM的这套工具虽然功能强大,但是价格不菲,而且需要服务器的安装相当复杂,一般都是传统大公司在使用Clearcase或者UCM,而新公司选择RTC的比较多.
Subversion是集中式的版本控制工具,并且是开源的,适合中小型的公司,而且也比较简单,当然功能有限,安全性也差.
Perforce是另一个在很多公司使用的集中式的版本控制工具,支持变更集的概念,有安全控制,性能也很好,但是不开源,当然比Clearcase便宜很多,架构也比Clearcase简单.值得一试.
Git 基于 DAG 结构 (Directed Acyclic Graph),其运行起来相当的快。在Git发布后的来年,世界上所有的大型的开源项目全部从Subversion迁移到了Git上,http://www.github.com/真是很大,这可能是这具星球上最强大最牛最酷的SCM系统了。Git可能并不是最简单的,但它一定会是未来十年的主流。
注:以上内容主要来自文章<Version Control by Example>,读者可以用下面的连接详细学习.
http://www.ericsink.com/vcbe