漫谈用过的版本管理工具–CVS,ClearCase和Git

我接触过SVN,CVS,Clearcase和Git,真正做项目用过的有CVS,ClearCase和Git,在这里简单写下我自己对这三个版本工具的使用感受。

基本对比

SVN,CVS,Git为开源免费工具,ClearCase为IBM所有 。

SVN,CVS,ClearCase为集中管理,Git为分布式管理。

ClearCase只有大公司使用,小公司一般会使用SVN,CVS,Git。

对于硬件RTL代码库,CVS和ClearCase使用比较舒适, 而大团队大项目使用Git造成效率低下。

Git是分布式的版本控制系统,其设计初衷是为了自由,每个开发者不必依赖central的中心服务器,在不联网的local环境仍可以干活。Git是现在应用最为广泛的版本管理工具,尤其在GitHub推广流行下。在对代码的一致性的实时要求不高的环境中使用还可以,但对大规模的开发团队,代码一致性的实时要求高的情况,使用git效率并不高。特别是如果存在一个central的quality gate,对每个人提交的修改进行验证,质量合格才进行merge,那么会造成排队的人过多,长时间不能顺利提交修改的代码,而造成开发效率很低。

CVS优缺点

CVS使用简单,是中央管理的版本工具,其代码是统一管理。如果连不上服务器就干不了活。常用场景是每个开发人员每天早上update下自己的工作区,晚上下班前在做完本地检查没问题后checkin自己的所有本地修改。如果同一文件已有人更改过了,则自己要先update到最新,在本地做完merge后再check in,否则checkin 失败。 所以大家一有修改就及时checkin,要不然就有可能需要自己在本地痛苦的做merge。

由于大家都是在latest下做事情,别人的更改会立马作用到自己的工作区,如果其他人的更改有问题,就会影响到自己的工作,所以小团队用CVS可能忍受,如果大团队的话,由于相互影响很大,很难有很高的开发效率。 当然VCS也可以回滚到老版本,但使用起来特别不方便。

据说CVS也有branch和tag可功能,可是为什么我就从来没用过呢?这个应该是公司的管理策略有关吧?四五十人的团队分布在不同的block上,冲突概率相对较小,也就简单着用了。新项目就直接建个新repository,copy原来的代码放进去,基于此开始新的开发工作,确实简单粗暴。

另外,CVS太古老了,大家基本都放弃使用了。

 ClearCase的优缺点

ClearCase的缺点显而易见,中央管理造成只能在线工作,管理复杂,以及成本高等等,造成只有少数大公司能用的起。但优点是不同的vob自由组合成新的project vob,方便项目的继承管理。另外方便的lable管理和每个用户自定义的Configure Spec结合来,可以自由的切换可见版本和自由回滚。大家可以在统一的baseline下做事,在合适周期下整体向前推进。

大团队使用clearcase悠然自得,每个模块在不同阶段对外release一个label,或其他team使用。自己内部可以继续开发工作,而不为外部使用,将改动造成的影响限制在局部范围内,只有下一阶段代码成熟后,再对外发布新的label。

设置CS是使用ClearCase过程中最常做的事情,一般会将其他模块release的label放进去,而自己做开发的部分放到latest可见。整个project的release也是以CS的形式进行分发。

———————————————————

深入理解可参考 版本管理三国志 (CVS, Subversion, git)

阅读:236

发表评论

电子邮件地址不会被公开。 必填项已用*标注