我的体会是,对于一个软件团队,在最坏最坏的情况下,也应该有源代码管理和Bug管理的工具。除非这个团队完全搞原始作坊模式,否则,第一个应该添置的就是这两个工具(集成开发环境不在此列)。
也有很多资料和文章把这两个东西混在一起将,都讲成配置管理工具。当然,这种说法,相当于把变更管理也纳入配置管理的一部分了,这也是可以的。我们可以不必追究这种terminology上的细微区别。
source control和bug tracking,市场上的工具至少有十几种,如果按照价格划分,基本可以分成三挡:高端,中层,低端。
高端的产品,基本上价格是几万以上,例如Rational的ClearCase(做source control的)和ClearQuest(做bug tracking)的
中层的产品,基本上价格是几千到几万,例如微软的VSS(做source control的)和微创的BMS XP(做bug tracking)的
低端的产品,基本上免费或接近免费,例如CVS(做source control的)和Bugzilla(做bug tracking)的
此外,还有PVCS的一套source control的,CA(就是冠群)也有一个source control的,还有很多commercial的bug tracking tool,都定位在中层。
-------------------
说完这些,就可以说安装了。rational的产品到底是不是很难安装?open source的东西是不是很难安装?入门要多少时间?这些问题恐怕要做过一遍才知道。
前两个礼拜我把rational的两个产品和open source的两个产品都安装和基本适用了一下,下面写一些随意的心得,给大家参考。这只是一些心得,而不是安装指南。
!!! 请注意,看着我写的这些东西,是不可能完成安装的。但如果在安装之前或者安装过程中看一眼,多多少少会有些启发,少走一些弯路,至少能对前途有些信心。
要说明的是,我原先对vss和bms xp都已经有实际经验了。有没有同类产品的经验,对学习新产品所需要的时间影响很大。
#################
# Bugzilla: #
#################
安装难度:中等
技术要求:linux基本操作 & Apache
安装用时:一天
网上资源:多,但以英文为主
有大概三分之一的时间用来手工安装他所需要的各种perl库。这些库都没有包含在bugzilla-<version>.tar.gz里面,bugzilla网站也没有,不爽。不过在线帮助里面提供了连接,慢慢来一步步也能装好。比较好的一点是,bugzilla的tar.gz里面带了checksetup.pl,能够检查需要安装的perl库有没有装好,版本是不是符合要求。这种检查工具对于我这种perl低手来说,很方便。
然后,有超过一般的时间用来配置apache。主要的问题处在文件权限。创建好alias,写好directory的属性,然后再浏览器里面打开
http://localhost/bugzilla,就得到一个HTTP 403错误。死活高不定,网上查了无数资料,尝试了很多方法。最后解决的方法是用了chmod --recursive 777 *,把所有文件都rwxrwxrwx了,也就没有权限问题了。
数据库方面倒没什么大问题。只不过在redhat 9.0上面,mysql不会自动启动,要手工运行/etc/init.d/mysql start。不过创建bug数据库等都很方便的,按照安装说明的步骤添加用户什么也都满方便的。安装完以后,还可以用admin身份在web界面里面修改各种配置。
另外,比较不爽的一点是,bugzilla在web界面上注册新用户以后,密码是通过email发送的。我没有配sendmail,结果只能用admin进去去修改新用户的密码,然后在人工通知新用户。
######################
# CVS for Linux #
######################
安装难度:中等
技术要求:linux基本操作
安装用时:4小时
网上资源:多,中英文都有
有一篇参考文献非常好:
http://www.chedong.com/tech/cvs_card.html。建议每个新上手的都看一看。
CVS的第一个麻烦在于服务器的安装。很多文档(包括上面的那片文献)里面都没有提到服务器怎么安装,都只讲了初始化cvs init。其实,这只是初始化CVS的repository(相当于代码仓库的概念)。仅仅靠这些,远程客户端是无法连接到服务器的。
服务器的安装需要配置xinet.d。需要在conf里面加上cvspserver 2401 tcp,并启动/etc/init.d/xinetd(这是在Redhat 9.0上的,其他版本需要查网上资料)。这样,cvs服务器才算配好,服务器会在2401以pserver协议侦听,负责用户身份验证以及其他功能。除了pserver以外,还可以通过ssh等其他协议,当然,配置方法是类似的,但一定要配置。
CVS服务器的配置可以参考这本中文书:CVS和Nightly Build技术。这本书在新风雨有卖,URL是
http://www.cnforyou.com/query/bookdetail.asp?viBookCode=7501。这本书第2章 “CVS安装和权限配置”相当详尽,基本上把改讲的都讲清楚了,只需要再查少许google,再加上少许Linux的基本操作技能,就能把CVS服务器搞定了。
顺便说一下,《CVS和Nightly Build技术》这本书的第二章有一个很致命的错误:第16页倒数第三行应该是“server_args = -f --allow-root=/src/master pserver”。原文误作“server_args = -f -allow root=/src/master pserver”,漏掉两个减号。
CVS的客户端WinCVS也相当麻烦,用户界面很不友好,不愧为open source的产品。例如,
1)任何操作如果成功,返回的结果总是“***** CVS exited normally with code 0 *****”,让人很迷惑,即便他说了"exited normally"。
2)无法像ViewCVS里面那样看到服务器上的代码库全貌。而VSS和ClearCase都可以。
3)如果服务器是CVSNT,在图形化登录框中目录要指定为"c:\cvsrepro",而在command line窗口中要指定为“c:\\\cvsrepro”
这只是几个典型的不爽的地方。open source的东西再一次表现出易用性差的问题。
另外有个东西叫做ViewCVS,是另外一棒人开发的一个cvs的web界面,相当好装,只要把tar.gz解开,在apache里面创建好虚目录,然后修改一下ViewCVS自己的配置文件就可以了。15分钟搞定。
################
# CVSNT #
################
安装难度:低
技术要求:Windows基本操作
安装用时:2小时
网上资源:多,中英文都有
都传说CVSNT难以安装,难以配置,可是我的感觉完全不是这样。我是装在windows 2000 pro上的,安装文件是一个installshield,安装好了以后,cvs服务器被装成一个nt service,管理界面从开始菜单或者控制面板都可以进去。权限管理用local用户帐号或者domain用户,没什么需要配置的。CVS Repository可以在管理界面里面跟着wizard生成,几步点完就搞定了。当然,也有可能因为我先装的cvs for linux和wincvs,对cvs的一套概念都熟悉了,所以装cvsnt快了很多。
###########################
# Rational ClearQuest #
###########################
安装难度:中等
技术要求:Windows基本操作,关系数据库的基本操作
安装用时:一天
网上资源:少,中文几乎没有
先声明一下,我装的rational的产品,用的都是我们公司买的license,不过都是nodelock的,所以就不要来问我索要crack或者floating license什么的了。
安装ClearQuest,强烈建议把这片文档作为安装和基本操作参考:
http://www.8848software.com/scmchina/doc/rationalcqug.pdf。这是我能找到的最好的中文材料。这片文档让我有一种拨云见雾的感觉。
ClearQuest最大的问题是服务器的配置概念不清晰,给人感觉很乱,易用性差。比如,服务器配置程序它叫做"ClearQuest Maintenance Tool"——其实,应该叫做Admin Console或者Server Admin之类的,就一目了然了。
按照我最初的理解,ClearQuest应该是完全的Client/Server结构,Server端的服务进程会在某几个端口上和Client通信。Client端只需要配制服务器的地址和端口就可以了(其实,BMS XP就是这样做的,这样的概念非常清晰)。但后来我发现,并非如此!ClearQuest其实根本没有这真正意义上的服务器程序。例如,在BMS XP中客户端登录时,服务器上所有bug database列表都是从服务器上通过Remoting的RPC获取的;而在ClearQuest中,服务器上的bug database列表是通过由客户端直接访问服务器上一个共享的数据库得到的,例如一个共享的Access数据库的mdb文件。
ClearQuest的这种client/server设计给我一开始的安装和配置带来了很大的困惑。
当然,这里我并不是说BMS XP比ClearQuest好,但是至少在体系结构上,比ClearQuest清晰很多,容易理解。
说说安装步骤吧,先是装服务器,安装好以后先要运行Rational ClearQuest Maintenance Tool来创建Schema Repository(相当于一个元数据库),然后再在ClearQuest Designer里面添加和维护bug database(这个入口如果没有告诉你、不看手册,自己找根本不可能一下子找到,易用性一塌糊涂)。
然后是客户端,客户端也要先运行Rational ClearQuest Maintenance Tool,连上刚才创建的那个Schema Repository。然后再运行真正的Rational ClearQuest,选择数据库,登录。进去以后,就是典型的Bug tracking system了,可以查询,登记新bug,看报表,操作bug等等。ClearQuest的过人之处在于Designer很强大,对field的定制很强,报表功能很强,与ClearCase、VSS等可以集成。至于基本的bug tracking功能,也就和大部分的产品差不多啦。本来嘛,bug tracking就这么点花样。
从安装ClearQuest我体会到,Rational的产品的易用性差果然不是吹的。怪不得可以卖这么贵,怪不得培训也这么贵,怪不得会用rational产品的人的工资这么高,怪不得用了rational的公司那么神气,唉。
大家不要扔搬砖,我说的是肺腑之言。Linux难用,所以linux/unix的sys admin比win2000的sys admin吃香。Rational大致也有这个味道。
##########################
# Rational ClearCase #
##########################
安装难度:难
技术要求:Windows基本操作
安装用时:四天
网上资源:少,中文几乎没有
几点忠告:
1)不要轻易使用ClearCase,哪怕你已经用了很多Rational产品。CVS是很好的源代码管理工具,150人以下都没问题;VSS也对30人以下团队很适合。除非你有无法解决但又一定要解决的问题,例如multi-site,例如你希望能对目录结构也作版本控制,例如你要全面上马Rational的SCM理论,否则不要用clearcase。
2)在开始安装ClearCase之前,最好先好好把VSS和CVS用用熟。尤其是VSS。VSS几乎可以说是ClearCase的简化版本,很多term都很像,很多概念都很像。相比之下,CVS倒更像微软内部使用的Source Depot。举个例子,cvs可以直接在客户端编辑文件,然后commit。在编辑之前不需要从服务器上获取编辑权限。而vss和clearcase在编辑客户端文件之前,都需要从服务器检出(check-out),编辑完以后再检入(check-in)。
3)有了VSS的基础以后,在开始安装之前,仔细的读一遍《软件配置管理策略与Rational ClearCase》的第一到第五章。看不懂就反复看,“文读千遍,其意自现"。这部分内容相当于是准备知识。这本书在
http://www.cnblogs.com/andy2005/admin/www.cnforyou.com也有卖的。
现在可以开始安装了。强烈建议参考这篇:
http://www.8848software.com/scmchina/doc/rationalcclt.pdf。同样,对于ClearCase来说,这是我能找到的最好的中文材料。这片文档让我有一种拨云见雾的感觉。
说实话,在安装ClearCase所用的四天时间里,有三天是在上面那本书、在理解clearcase里面各种复杂的概念。在最后一天,我安装了ClearCase的服务器和客户端,并摸了一遍他的源代码管理功能。至于clearcase里面和项目有关的那些功能,我没有碰,我想这对于我没用,对很多100人以下的中国软件企业也没用。即便遇到针对性的问题,也有很多其他的方法可以解决。没听说微软用clearcase,但那么多几十万几百万几千万行代码的产品也都开发出来了。劳动人民自然有劳动人民的方法。
简单来说,ClearCase服务器上配置源代码管理主要步骤是:
1)运行Server Setup Wizard。它能帮你创建一个project VOB。没有project VOB,你是无法在administration console里面创建其他VOB的
2)然后就是一个个创建VOB了,可以在admin console里面创建,也可以用"Create VOB"向导
还是满简单的。然后运行客户端,直接指定服务器名字,连上去,然后选择所需的VOB,创建本地工作目录并下载代码就可以了。后面的使用和VSS很像。
比较好的一点是,起码clearcase的server/client结构比clearquest清晰。
一句话,我痛恨ClearCase。
ClearCase搞了很多术语。这些术语,如果光看字面,你根本猜不透这个术语是什么意思。但如果你仔细研究一下,就会发现,这些术语所对应的概念,其实在cvs和vss里面都已经有了,都是满基本的概念。例如,基线就是vss里面的做标签;“基于活动的SCM”就是把ClearQuest里面的bug修复、DCR(design change request)等和多个check-in联系起来;“审计”的概念其实差不多就是VSS里面Show History时看到的那些信息;VOB就是CVS里面的Repository;工作空间以及快照视图就是VSS里面的Working Folder;构建审计其实就是记录了Daily Build中每个Build对应的每个源代码文件的版本;......
我觉得这些术语人为的设置了理解的障碍。软件工程的目的是为了提高软件开发的效率和质量,工具的只是对软件工程方法的一种辅助或者强制实现。没有必要在工具的用语以及背后搞这么玄乎的术语。如果按照Rational的套路,我也可以来创造一些玄乎的术语,或者下一个让人乍一看摸不着头脑的定义:“基线就是软件配置项版本空间中的矢量” :)
补充一下价格。
Rational的产品价格好像不公开报价的,都要到代理商那里去查询的。不过在google上还是能找到一些线索,有一些软件公司的产品选型报告里面列了一些价格信息:
ClearCase, floating license, 每个license卖3000美元,外加技术支持服务600美元。如果买50个,总价180,000美元,打掉21,000美元折扣,共159,000美元(130万RMB,tnnd)
ClearQuest,floating license,三个license的价钱是8380.29美元。
以上信息仅供参考,不一定准确