软题库 培训课程
当前位置:信管网 >> 其它资料 >> 文章内容
版本控制工具:“和谐”项目开发的保证[2]
来源:信管网 2012年07月05日 【所有评论 分享到微信



  CVS纵然是一个老牌的工具产品,并也对开源事业有贡献,但CVS的命令行操作着实让一些使用者头疼。在对一个特定版本的文档Check in的时候,还要输入一长串的路径名、文件名。在操作易用性上与CVS形成对比的是微软家族的VSS。作为微软的产品,在图形界面化操作上自不用多言,但VSS只能适用于小团队的开发工作。VSS是很好的入门级工具,但它的一些功能也太过于“入门”,在验证密码、保存密码这些基本功能上处理的不尽人意。适用于大型软件开发的有“中坚级”的Clearcase,用它来管理一些小型的项目管理有些“大材小用”。Clearcase支持目录版本管理、异地团队开发、视图、多服务器等强大功能,所以一些大公司把它做为一、二级产品管理用,但同样它的价格也不菲。CVS是开源的,免费的,更何况它还有一个理想的替代者——SVN。SVN的设计专门针对CVS的问题作了改进,命令的设计更为合理,对二进制文档和目录这样的数据加强了控制能力,并且吸收了VSS的lock-modify-update(release)的模式和modify-merge模式的优点这两种方式在一定程度都支持并作了优化,没有提高使用的复杂度——这是难能可贵的。由于SVN的设计结构很好,所以很容易为它开发客户端,好像很快就有了tortoiseSVN,Eclipse插件等很多客户端,还有WEB模式的,可以远程管理,支持RSS更改订阅。

  孰优孰劣?

  现在又回到“开源软件 VS.商业软件”的老话题上了。先来看下CVS的基本工作模式:
  

  CVS在服务器端维护代码文档库,不同的开发者在本地机器上建立对应代码树,并利用CVS保持本地代码文档同代码文档库的一致。当由于多个开发者对文件的同时修改造成本地与库中的代码文件冲突时,CVS报告并协助解决冲突代码的合并问题。普通开发者(非管理员)对CVS的使用流程如下所示:

  
  Check out命令只需在开始建立本地代码树时使用一次,其后更新本地代码则使用update命令。update命令比较服务器和本地代码库的区别,并把本地代码树中过时的文件自动更新。当完成对代码的修改之后,在提交代码之前同样需要使用update命令,以获取他人并行修改的的代码。如果出现冲突(即对同一文件同时进行了修改),CVS将在本地代码中把两者都保留并标记出来,要求开发者处理冲突。在冲突不存在或已解决的情况下,使用commit命令将服务器代码更新为本地代码。CVS要求为更改提供注释,并自动为更新的文件处理版本编号。当软件需要正式发布时,使用export命令导出不包含CVS设置信息的源代码树。

  即使不用拿CVS的升级版SVN,就算是拿没有目录版本控制功能的 CVS 来和商业的版本控制工具相比,我们也有充足的选择开源版本控制工具的理由:

  服务器端是否和客户端一样看起来很美?

  有一些商业软件的服务器端简直就像是一个垃圾场,用流水号命名的文件名,一个目录下动辄成千上万个文件。CVS以文件为核心,即面向文件的管理方式,项目文件可以方便地组合和移植。

  服务器端是否在使用数据库来作版本控制的数据引擎?

  为了支持目录的版本控制工具,大多数商业软件选择了一个最为简单和直接的解决方案——数据库,用数据库将文件名和版本库对应。但是引入数据库,服务器的稳定性、可维护性大大下降,成为管理员的噩梦。增量备份计划难以实现,不知道什么时候会出现数据库崩溃。

  是否支持到其他版本控制系统的迁移?

  对于商业软件,这个答案是否定的。如果允许将版本库导出到其他版本控制系统,简直就是将自己好不容易积累的客户拱手相让。

  可否定制?是否可以对提交说明(Commit Log)进行检查?可否每一次的提交事件能够收到邮件通知?

  CVS 的 CVSROOT 脚本扩展,以及 SVN 的 Hooks 钩子脚本,可以让用户充分发挥想像的空间。而商业版本控制工具,有此功能的寥寥。

  客户端是如何状态保持的?

  熟悉 CVS 和 SVN 的用户应该知道工作目录下的 CVS 和 .svn 隐含目录的作用,就是用于记录版本控制状态信息的。而很多商业软件并没有这个机制,而是靠服务器端来维护此记录:哪台主机、检出哪个版本的代码、存储到哪个目录。这么做的一个弊病就是工作目录不能自由在硬盘中移动,系统重装导致的状态丢失。}

  成本因素

   一是软件采购成本。商业软件版本控制工具动辄十几万美金,而且是和用户数目挂钩的。

  二是学习成本。商业软件版本控制工具的部署范围非常有限,不能保证新员工一定熟悉该系统,但是如果选择开源的版本控制工具,那么员工的培训费,可能就可以省下了。

  客户确认软件中没有木马、间谍软件么?

  客户肯定不会去购买你竞争对手开发的版本控制工具,那么您为什么还会相信其他闭源的版本控制工具呢?

  小结

  再优秀的版本控制工具都是软件项目开发中的一部份,况且,一个项目的完成并不只只涉及版本控制工具,还包括其他的一些工具。一个软件项目的开发成功需要涉及工具的使用,开发人员资源的管理等因素。但是,选择一款优秀的、适合开发团队和项目需求的版本控制工具能够提高开发工作效率和代码的优质性。对于版本控制工具的选择,秉持的一个原则是:“不选贵的,只选对的。”

[1]   [2]   
扫码关注公众号

温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

相关内容

发表评论  查看完整评论  

推荐文章