【IT168 开源】人们在软件开发的最初阶段,往往借助于电子表格、白板和发布工程师(Release Engineer,在软件开发过程中跟踪软件版本发布信息的软件工程师)在软件开发过程中进行协调工作。发布工程师往往需要从一个地方跑到另一个地方,来跟踪开发者在进行哪个模块的开发,以及哪些bug修复、发现和引入。不用说,这个过程充满了问题和错误。因此,源代码控制管理系统(Source Control Management,SCM)应需而生。
源代码控制管理系统是为软件开发团队准备的一套软件,通过它可以实现团队成员之间的协作和服务。
从其可以实现的最基本的功能来说,SCM提供文本管理和版本控制功能,这样团队成员不会互相改写对方的修改,只有最新版的文件被标记为操作使用中。但这只是基本功能。源代码控制系统还让开发者可以同时操作同一个文件,合并其他开发者所做的修改,跟踪并审计要求和已做出的修改,跟踪漏洞修复状态和执行发布。
在某些情况下,源代码控制系统还可以包含其他组件,来帮助开发者管理一个软件的整个生命周期的过程。源代码控制系统和应用程序生命周期管理系统之间的区别实际是一个语义上的不同,反映了系统中提供的工具的完全性。
2007年春天,著名调查公司Evans Data公司调查了不同源代码控制系统的用户。这些用户被要求对他们使用的源代码控制系统进行打分,打分从“优秀”到“尚需改进”。只有那些真正用过这些产品的IT经理和开发者对它们进行打分,而且他们只对当前正在使用的工具进行打分。此外,用户还要求根据一些属性的重要性进行打分,从而得出一个真正的评价。
在对这些源代码控制系统进行调查的过程中,可以很清楚地看到,每一个产品都有自己的内容、自己的吸引人的地方和缺点。
来自专有公司的源代码管理系统
图1:Borland的StarTeam
来自Borland的StarTeam在这个分类评测中夺魁,它在好几个标准上可以让用户满意,其中包括文件管理、合并跟踪信息、执行发布、登入/登出速度、管理费用、漏洞跟踪、产品关联和服务器使用率。此外,StarTeam的用户在所有的分类中将其评为前三,给了它很高的分数。但是,StarTeam的市场份额比较低,Borland曾经闻名一时的市场力量已经衰落,而且公司的稳定性最近也受到了质疑。
图2:Perforce公司的SCM工具
形成对比的是,Perforce是一个在公司历史中一直专注致力于开发源代码管理系统的公司。Perfoce的用户对产品的变更管理功能给了很高的评价,同样的还有产品的安全功能,它依靠LDAP或活动目录来进行验证和执行,这提供了认证的一种简便的方式,尽管它不如分层加密那样牢不可破。Perforce由开源数据库Ingres团队的成员创建,其不寻常之处在于它在软件中包含自己的数据库,而不是整合一个现有的数据库。Perforce可以被应用在小公司和大公司中,但它的主要目标用户是那些具有中等复杂度配置的开发团队的公司。
图3:IBM的ClearCase
IBM的ClearCase的情况和Perforce有些相似,也具有悠久的历史,并提供一些优先的功能。但是和Perforce一样,这个源代码管理系统创建在一个地理位置分散的团队,团队成员不常见面的时候,因此它在集中化的紧密控制的开发环境中才能最大发挥它的作用。ClearCase与Rational、之前的Pure软件有着很深的渊源关系,这两个公司都以专注于质量而闻名。
ClearCase的专有数据库也被嵌入在这个产品中,它提供内在的数据库,但是它也支持外部的数据库。一点不令人吃惊的是,这个产品支持统一变更管理(Universal Change Management,UCM),这是Rational Unifed Process应用程序生命周期技术的一部分。在文件、变更管理以及执行发布方面,Clearcase被它的用户打了高分。
像PVCS和本篇文章中提到的大多数源代码控制系统一样,ClearCase支持原子提交(atomic commits)变更集(changesets)。这些功能非常重要,可以保持相同版本中相关文件和在代码库中维持一致稳定性。事实上,变更集(changesets)定义了相关联的文件,在这些文件中,任何修改都将影响其他的文件。原子提交(Atomic commits)把变更集看作一个离散的单元;它们允许修改过的文件被登入,前提是所有变更集中的文件同时也被登入。这儿的原子不是取其爆炸的意思,而是希腊语中的“不可分割”的意思,这是事务处理技术中的一个重要的概念,这是一个重要而且被人期盼的功能。
开源世界中的源代码管理系统
图4:开源Subversion
在开源方面,Subversion很明显是一个强大的工具。用户给它打出高分的功能包括与其他工具整合、性价比、可扩展性、支持地理位置分布的团队、分支(branching or streams)。除了最后一个外,这些属性定义了开源开发的头等问题。现在,无论你的开发团队是否创建一个开源软件,这些特征都非常重要,因为团队变得更加需要协作和更加具有地址位置分散性。
Subverion最初由Collabnet赞助,现在这个公司在开发过程方面依然非常活跃,Subversion是被用来取代CVS,当时CVS不支持原子提交。尽管这个开源社区现在已经解决了CVS中存在的这个问题,Subversion和其他工具已经比CVS具有更多更强大的功能,看来CVS将会逐渐淡出了。
Subversion是否会继续因为开源而保持其受欢迎的程序,可能要取决于IBM的Jazz项目。Jazz项目希望扩展Eclipse平台使其具有所有协作工具的功能,当然也有很多新功能。新功能对此前的方法进行改进,使开发者对修改、漏洞和团队成员的操作具有更好的可视性。Jazz项目希望增加开发过程的透明性和流动性,作为一个开源的源代码控制系统,它可能会在这个市场中占有重要位置,就如同Eclipse在IDE中一样。但是,目前IBM还在对其进行加工中。
来自微软的源代码管理系统
图5:微软的Visual SourceSafe
当然,要想讨论源代码控制系统,自然就少不了讨论这个市场中具有最大份额的工具——微软的Visual SourceSafe,尽管用户只给它打出了中等的评分。SourceSafe的目标用户是小型开发团队或个人用户,它不是为大型复杂的项目或那些地理位置分散的团队而准备的。SourceSafe具有基本的版本控制功能,当然,它还可以与世界上最普及的应用程序开发环境Visual Studio进行无缝结合。
Visual Studio Team是微软新版的更全功能的应用程序生命周期管理工具。微软希望开发团队从SourceSafe转向Visual Studio Team和Studio Team Foundation服务器。Visual Studio Team具有好几个版本,一个是设计者版,一个是开发者版,一个是测试者版,还有一个包含全部功能。
我们预测Studio Team系统将获得更大的成功,它不仅仅受益于微软的巨大市场和微软开发高质量工具的能力,而且在开发者中具有很大的影响力。而且当我们问开发者,如果他们能任意选择一个款源代码管理系统来使用话,它们会选哪一个?Visual Studio Team系统是用户选择最多的一个。
结论
市场上还有很多其他源代码管理系统,不过本文中只是介绍其中一些相对比较主流的产品。在源代码管理系统的世界中,在成本、功能、性能和安全等方面,存在很多可变性。
在源代码管理系统中,既有老而弥坚者,也有最近几年杀出的新贵。一些最常用的源代码控制系统,诸如ClearCase、Perforce和PVCS,大多数从上世纪八十年代就已经在市场上存在。它们在被设计的时候,集中化管理和对局域网的支持还属于尖端技术。它们当时无法考虑到今天的复杂的项目、协作的环境和分布在各地的开发团队。但是,它们非常稳定,已经很好地证明了自身的价值。
新的系统,诸如Borland的StarTeam、微软的Studio Team、Subversion和Jazz,代表了新一代的源代码管理系统,可以被应用于大型项目和分散在不同地方的开发团队。
你需要哪一中类型的源代码控制系统,这取决于你的环境、预算和你的开发团队和项目的配置。