欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

clearcase、Git之我见  

程序员文章站 2022-06-04 16:05:18
...

软件配置管理一直以来是软件工程的基础。而配置管理本身对于开发者及软件工程生命周期管理来说,不但具备其基本的 版本控制功能,还需要具备工作空间管理、构建管理、流程管理等。其中各家的实现均有特点。而以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+