ThoughtWorks开发人员最喜爱的分布式版本控制系统作者 Abel Avram 译者 张晓庆 发布于 2010年4月11日 Martin Fowler在ThoughtWorks的软件开发邮件列表中做了一个调查,了解开发人员怎么看待一些版本控制系统(VCS)。他据此对主要的版本控制系统写了一篇评论文章,并对集中式和分布式系统进行了比较。 调查的结果如下:
参与者把9种版本控制系统进行分类:最佳、不错、有问题、危险、无意见,最后一个是说他们根本没有用过。“有效回复”是指去除“无意见”的所有其他回复,而“赞成比例%”是指(最佳+不错)/ 有效回复的比例。 虽然调查的范围有限,只表明了ThoughtWorks公司内部的主观看法,但该结果或许也可以代表其他公司对版本控制系统的看法。 两个开源分布式版本控制系统,git和Mercurial赞成比例最高,均超过了95%。开源集中式版本控制系统Subversion,赞同比例也很高,达到93%。而排名最低的是商业系统:IBM的ClearCase,微软的VSS和TFS。 所有的99个回复者都用过Subversion,85个用过git,84个用过CVS,而使用过Bazaar的只有17个人。多达77个人使用过VSS,但是其赞成比例只有3%。 这些结果与老马最初关于版本控制系统的评论不谋而合。通过与ThoughtWorks员工及合作者的讨论,马丁福勒总结说大家普遍接受的版本控制系统有3种,也是值得推荐的:Subversion、git和Mercurial。这意味着你需要在集中式和分布式VCS之间选择。对老马来说,分布式VCS的好处是“给工作带来了许多灵活性,但如果使用不当,这些灵活性反而会比较危险”。Subversion的好处是: 鼓励使用简单的中央仓库模型,不鼓励大规模使用分支。如果你像我的许多朋友那样,正在使用持续集成,这种模型相当好用。Subversion是个绝佳选择。 老马进而对分布式VCS和集中式VCS做了对比:
老马提到集中式VCS更擅长处理二进制文件: 特定情况下,即使整个团队已经熟练使用分布式VCS,也最好选择Subversion。这就是当使用二进制,VCS无法合并的时候-比如Word文档或者幻灯片。此时需要使用悲观锁,只能有一个签出是可写的-这就需要一个集中式的系统。 老马对ClearCase和TFS的评价很低: 有两个VCS倍受批评:IBM的ClearCase和微软的TFS。它们广受批评的原因之一是客户使用广泛,通常是公司政策强制使用。 VSS被认为是最差的选择: 在结束不推荐的版本控制系统之前,我想说一下这个尤其糟糕的工具:Visual Source Safe,或者可以称之为:Visual Source Shredder(译注:shredder,粉碎机)。感谢上帝,它现在已经很少见了,但是如果你还在用它,我们强烈建议你换掉,就现在!它不但用起来非常痛苦,我还听说过多次数据仓库崩溃的故事,实在不能让人信任。 老马的看法比较主观,并没有比较它们的实际功能。文章Better SCM Initiative中对28种版本控制系统做了深度比较,但并没有排名,而是提供一些关键功能指标,包括:原子提交、文件和目录的移动或者重命名、移动或者重命名后的智能合并、文件和目录拷贝、能够只在一个目录工作、跟踪没有提交的变化、文档、部署的难易程度等等,这样用户可以自己决定哪个VCS最好。 Scott Chacon写了个帖子为git辩护,解释为什么他认为git比Mercurial、Bazaar或者SVN更好:廉价的本地分支、一切都在本地、速度快、适用于任何工作流程,以及其他一些原因。 当然,每个开发人员或者团队都有自己喜欢的CVS。您最喜欢的是什么呢?您有没有高兴或者惨痛的经历与大家分享? |
|