谈谈我的看法:
如果只是从工具的功能角度来说,由于各个工具对同样的一件事情的做法未必一样,例如,CC有Config Spec的概念,而SVN则没有这个概念,我现在公司目前在用的Perforce也没有Config Spec的概念,对于那些习惯了Config Spec用法的同事而言,他们会认为CC好而SVN/Perforce不好,原因就是他们找不到他们习惯的Config Spec。由此可见,简单的说工具的功能好坏其实意义不大。客观的说,其实对于大多数程序员而言,他们绝大多数的操作就是check in、check out、update几个而已,从这个意义来说,但凡是个配置管理工具都是可以使用的。
但是,怎么评估某个工具是否适合你们公司呢?我认为可以从如下角度去看:
1、你们的开发模式是什么样?是怎么进行开发协作的,我目前的一些同事里,习惯使用CC的人其实很习惯于各自在各自的分支上工作并由SCM将其分支向主干进行合并,而习惯使用Perforce的同事则习惯于大家直接在主干上工作,我调查过他们的使用习惯之后才意识到,其实他们这样的做法是和他们之前的开发模式有关的,使用CC的人习惯于在一个强有力的控制机制下工作,而使用Perforce的人则习惯于小团队内的即时交流串行开发;而这时候,就在于工具是否方便于公司去实现其控制机制(不管这个机制是松还是紧)
2、团队规模,上一点已经提到,对于只有十几个人甚至几个人的团队而言,我目前的看法是他们用什么工具都差不多,而对于几十人甚至上百人的开发团队而言,必须需要一个强有力的控制手段,这方面CC有其优势,而SVN在这方面明显不足;
3、程序员对工具的熟悉程度,这个问题其实本不算是个问题,按说只要找到合适的工具给大家培训一下就成,可是,实际中经常遇到的是:尽管你选择了不错的工具,而就是因为这些程序员不会用这些工具而又不愿意学习(我也奇怪程序员为什么会这样),然后他们就说这个工具这不好那不好(我遇到不止一次,程序员说工具的不好根本就是他们不会这个工具而已),导致最终也不好推行下去