【IT168 技术评论】
什么是版本控制工具呢?版本控制系统一向被视为程序员的专有工具,因为程序开发中的代码变更,是经常出现和反复的。实际上版本控制工具应用范围远远超出软件开发领域,任何用计算机管理的经常变更的资料,版本控制系统都可以派上用场。
CVS和Subversion(简称SVN)是开源软件通用的版本控制工具。CVS有着30年以上的时间的考验,SVN是CVS理想的替代者。Linux的开创者Linus 就把Linux的成功归因于CVS。近年来尤其是SVN在1.1版之后,使用FSFS文本数据库替代BDB作为版本控制系统服务端数据格式后,大有超越CVS之势。SourceForge也于2006年初,将SVN作为托管项目的另外一个选择。
反观商业软件,版本控制工具大战也是如火如荼。但是无一例外,版本控制的商业软件无一不是以花哨的用户界面为噱头,以数据库(甚至加密数据库)为服务器端数据引擎,以目录、文件名可版本控制为卖点。
不用拿Subversion,就算是拿没有目录版本控制功能的CVS来和商业的版本控制工具相比,我们也有充足的选择开源版本控制工具的理由:
服务器端是否和客户端一样看起来很美?
我们了解到的一些商业软件,服务器端简直就像是一个垃圾场:用流水号命名的文件名,一个目录下动辄成千上万个文件,……
服务器端是否在使用数据库来作版本控制的数据引擎?
为了支持目录的版本控制工具,大多数商业软件选择了一个最为简单和直接的解决方案:数据库。用数据库将文件名和版本库对应。但是引入数据库,服务器的稳定性、可维护性大大下降,成为管理员的噩梦。增量备份计划难以实现,不知道什么时候会出现数据库崩溃,……
是否支持到其他版本控制系统的迁移?
对于商业软件,这个答案是否定的。如果允许将版本库导出到其他版本控制系统,简直就是将自己好不容易积累的客户拱手相让。因此在这种逻辑下,购买了商业版本控制工具,基本上等同于遭到了绑架,……
可否定制?是否可以对提交说明(Commit Log)进行检查?可否每一次的提交事件能够收到邮件通知?
CVS的CVSROOT脚本扩展,以及Sun的Hooks钩子脚本,可以让用户充分发挥想像的空间。而商业版本控制工具,有此功能的寥寥,……
客户端是如何状态保持的?
熟悉CVS和SVN的用户应该知道工作目录下的CVS和.svn隐含目录的作用,就是用于记录版本控制状态信息的。而很多商业软件并没有这个机制,而是靠服务器端来维护此记录:哪台主机,检出哪个版本的代码,存储到哪个目录。这么做的一个弊病,就是工作目录不能自由在硬盘中移动,系统重装导致的状态丢失……
成本因素
一是软件采购成本。商业的版本控制工具动辄十几万美金,而且是和用户数目挂钩的。而产品质量,正如上面分析的那样……
二是学习成本。商业的版本控制工具的部署范围非常有限,您不能保证新员工一定熟悉该系统,但是如果选择开源的版本控制工具,那么员工的培训费,您可能就可以省下了。
您确认软件中没有木马、间谍软件吗?
您肯定不会去购买你竞争对手开发的版本控制工具,那么您为什么还会相信其他闭源的版本控制工具呢?
| 第1页: 第1页 |