clearcase、Git之我见

软件配置管理一直以来是软件工程的基础。而配置管理本身对于开发者及软件工程生命周期管理来说,不但具备其基本的 版本控制功能,还需要具备工作空间管理、构建管理、流程管理等。其中各家的实现均有特点。而以Clearcase为例除了基本功能以外,优势及特色有以下:

1、CC不是独立的软件,可以结合clearquest,简称CQ,构建符合软件工程方法论RUP思想的 UCM统一配置管理。的配置管理。因此CC可以使用基本的配置管理,成为base方式,也可以使用IBM特色的并且具备了IBM SCM的最佳实践的UCM方式。 优势明显。


2、由于IBM软件工程各个阶段及领域都有产品和工具,其特色的领域还无人出其右,无论是需求分析,建模,还是集成,开发,测试,实施,配置管理,变更管理,发布管理等均有产品。其中许多产品还是业界标准,比如UML,DOORS等。因此 独立使用CC会觉得比较复杂,但是如果你的系统有足够多的IBM产品,比如AIX,ROSE,WEBSPHERE MQ等那么其CC的集成能力就体现出来了。由此,大规模使用CC的人想换平台就很难了,比如CCCQ中已经大量定制了权限,写了trigger,为CQ写了和CC相应的HOOK程序,有VBS的,有perl的。这样,你很难迁移到其他单一的平台,比如CVS,SVN等了。因为这些开源或其他商业软件能够满足某一个功能,但是集成面来说,异常麻烦。最后你有精力全盘从需求分析到开发,测试,管理全换那个精力还真不如好好用好Rational RUP平台了。


3、CC提供众多的迁移工具,无论是从其他工具迁移到CC,还是从CC迁移到SVN等反向,都没有问题。这不但可以用,而且已经成为了产业。


4、CC的实施能卖得出价钱,开源的或VSS等MS Team Foudation却难以卖出价格。对于技术服务提供商以及分销、代理来说,没有足够的动力。


在技术方面:

1、CC是集中式VOB库的代表,遇到分布各地甚至全球的库来说,CC有专门的版本 CC Multiside版本,可惜比较贵。CC标准版是它的子集,有专门的命令和接口来负责Multiside之间进行同步。其中适合全球性质的库来做。可以做到日不落开发。可惜这些操作难度较高。需要CC管理员,而对于不同的时差,不同的国家来说,配置各有调优空间,这是个慢工出细活的过程,做好了,效果很好,不逊色Hg git等分布式配置管理系统,但是做不好,几乎会骂声一片。


2、Git简单,高效。好用。不需要单独招管理员均可以运行。可以由项目的集成管理人员来兼职即可。release人员和debug人员的配合以及baseline,tag使用的水平决定了其Git的使用好坏。因此灵活强大。


3、CC适合订单式编程的项目,Git适合开源参与提交的项目


4、CC和Git的权限人员管理都是依赖于操作系统,比如windows平台,CC依赖于AD活动目录域控制器。而Git依赖依赖于cygwin的权限配置。

5、CC做好了的系统想变很难。因为CCCQ做的好的系统,其trigger,hook钩子程序会其主要作用,且这些程序均是CC特有,无法迁移到其他系统。而现状是其他系统要么无法实现,要么实现起来也没有现成的用,要么实现起来很难,要么实现了会随着这些开源软件版本升级而导致不可用。

6、由于Rational Jazz的RTC中已经有了做版本控制的功能,且不基于CC,所以,如果你只是版本控制,就用JAZZ即可。而且10用户含以下均免费。上手容易,且SVN等开源是更好的选择。当然JAZZ和CC也有集成包,迁移包免费提供

7、JAZZ和CC有市场定位,但是在中国,不说了,都不按规则出牌

8、想CC主内,Git主外是我的想法。那么我怎么做到的CC和Git牵手呢,用的这个:http://clearcase-git-integration.com/


再来看看其他高手的评价:为节选转载

————————————————————————————

Git 没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台,
Git 分布式版本管理系统,适用于参与开源项目的开发者。 他们由于水平高,更在乎的是效率而不是易用性。靠开发人员本身自我约束。
由于版本过多,权限管理无限制,人员流动可能造成资产流失的风险。

总结:
不适合公司项目管理。
Clearcase 则不同, 它适合公司开发团队。使用起来更加容易。是集中式版本管理系统。
Clearcase具备完整统一变更管理平台以CC、CQ的实施为整体基础的计划管理、需求管理、缺陷跟踪、任务管理等,提高项目监控和管理水平。
实现对变更和缺陷进度的监控,跟踪、对开发员的工作量和进度的监控跟踪。通过CC -CQ 统一变更管理、需求、变更或缺陷到代码版本和代码行之间关联实现眼更变更管理控制,而且便于实现 review
总结:
版本计划,任务缺陷跟踪 有效的跟踪和管理,项目源代码和发布软件 一致,完整,准确。使得版本质量得到保证。
流程统一
账号统一
集中管理

适用范围:
Git 适用于通过Internet,有多个开发角色的单个项目开发
Clearcase适合企业内部由项目经理统一协调的多个并行项目的开发

权限管理策略:
Git 没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作
删除分支等,导致细节丢失!过程不完整!权限需要通过脚本工具等来定义实现
Clearcase则有严格的权限管理,简单方便-
1)很明显,Clearcase问世已久,业已发展成为一个成熟的、集中式的软件配置平台(或许有臃肿之象);而另外一方,后起的Git携其分布式、易 用的特性(姑且认这两点是Git的最大优势)引来了越来越多的软件开发组织的重视和使用。在这种环境之中,Git在严密的版本管理、变更控制方面相较于 Clearcase都显示出了不够完善的一面,可是人家就是获得了更多人的亲睐,这是为什么?很显然,这些人并非冲着"Git在严密的版本管理、变更控制 方面的不完善”,那么他们到底看重了Git的什么特性?而他们看重的这些特性是否反映了软件工业发展的某些趋势特征,某些关乎我们吃饭家伙的未来重要提 示,或者至少提示我们是否应该放弃CC的继续深造而安心的投入到Git的学习中?或者两手都要抓?
2) 另外,前面有一位前辈说到软件公司1.Git是采用分布式,也就是不再有统一的配置库,每个人的PC上都有一个库。自己基于自己的库进行版本管理。这也正符合了GOOGLE一些开发模式, 简单地分析就是产品的开发组织者不必搭建一个强大的配置库、不必去维护权限、不必担心有人提交“不适当”的代码,反正公共代码就在那,谁乐意参与开发就用 Git去fetch一下,谁觉得自己开发的OK了,就提交一份Patch给开发组织者,开发组织者选取其中的精华进行合并,更新主版本。但这种方式,我个 人觉得在非开源项目、集中开发等国内大部分软件开发企业所处的氛围中,不是太适用,或者说我们更需要一个传统的库,大家基于它检出检入,同时根据这个库得 出一些统计指标进行管理决策。毕竟,开发者的工资、奖金、福利是公司支付的,而参与那些类似android的开源项目的开发者不受任何约束和管理。
有一个比较大的优势,就是可以跟SVN结合,我们目前在这方面也在做尝试,即现场的二次开发内部用Git,同时对于与总部主版本的交互用 SVN(总部不需要二次开发版本的回归)。这样既保留了总部SVN库的统一和权限的规范,同时又给现场二次开发提供了便利,他们之间可以不Git的邮件方 式发送代码和版本差异。这一点,还需要好好探索,目前仅仅是初级了解。。

3.每种管理工具,都有它自己的特性和优缺

Git 是 Linus Torvalds 最近实现的源代码管理软件。Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。


优点:

1).免费,开源项目android都用它。

2). 分支更快、更容易。

3). 支持离线工作,本地提交可以稍后提交到服务器上。
4). Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。
5). Git 中的每个工作树都包含一个具有完整项目历史的仓库。

6). 这个工具最大的好处就好像word中关闭文件前的撤销功能。就是它在开发开始的时候首先checkout出代码,然后建立一个分支,开始开发。修改代码 后,提交(仅在本地保存版本信息,未提交到服务器)。等一个任务完成后合并到主干,然后提交到代码服务器。也就是上面提到的离线开发。由于分支是在本地建 立的,所以不管是提交还是建立分支,合并分支,速度都会很快。

7). git引入一个索引(index)的概念,提交前,需要把要提交的文件加入到git索引(index)中:
git add path/filename1

git add path/filename2

然后提交.

8). ClearCase是集中控制的,而Git是分布式的,也就是不再有统一的配置库,每个人的PC上都可以有一个库,自己基于自己的库进行版本管理。Git两点最重要:
- branch 更方便;

- merge更方便。


缺点:

1). Git 没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台。

2). Git 分布式版本管理系统,适用于参与开源项目的开发者。 他们由于水平高,更在乎的是效率而不是易用性。靠开发人员本身自我约束。
由于版本过多,权限管理无限制,人员流动可能造成资产流失的风险,不适合公司项目管理。

3).Clearcase 则不同, 它适合公司开发团队。使用起来更加容易。是集中式版本管理系统。
Clearcase具备完整统一变更管理平台以CC、CQ的实施为整体基础的计划管理、需求管理、缺陷跟踪、任务管理等,提高项目监控和管理水平。
实现对变更和缺陷进度的监控,跟踪、对开发员的工作量和进度的监控跟踪。通过CC -CQ 统一变更管理、需求、变更或缺陷到代码版本和代码行之间关联实现眼更变更管理控制,而且便于实现 review。
总结:
版本计划,任务缺陷跟踪 有效的跟踪和管理,项目源代码和发布软件 一致,完整,准确。使得版本质量得到保证。

流程统一
账号统一
集中管理

适用范围:
Git 适用于通过Internet,有多个开发角色的单个项目开发.

Clearcase适合企业内部由项目经理统一协调的多个并行项目的开发.
权限管理策略:
Git 没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。
删除分支等,导致细节丢失!过程不完整!权限需要通过脚本工具等来定义实现.

Clearcase则有严格的权限管理,简单方便。 点,这些特性和优缺点绝不是简简单单的风格问题,应该都是针对开发者或设计者所面临的现实环境,所以我们在选择 配置管理工具的时候,不仅要认识、了解工具的特性和优缺点,更要清楚它是解决什么问题的、它面对的情景是什么。Git、SVN、CC,亦是如此~在新配置平台的投资这个问题,我认为这个很重要!因此,为了挽留用户群,有没有可能IBM开发出来具有分布式、易用等特 性的CC供老客户升级,或者Git应广大用户的要求不断完善版本管理和变更控制等方面的特性,最后两个软件平台又趋于一致,等待未来某个带有革命性特征的 新平台的挑战。

$ b" f* W5 @+ A# u+

你可能感兴趣的:(clearcase、Git之我见)