Clearcase, SVN, Git之我见



工作多年,软件源代码版本管理的软件也用过了这三种:Clearcase, SVN, Git.

许多公司使用Clearcase作为版本库管理工具,一般在使用中都会建立开发分支(用于个人开发)和集成分支(用于发布),Clearcase的优点是管理体系严谨,并且可以和Rational的其他工具比如ClearQuest集成,并且作为商业产品,有专门的团队提供技术支持和维护,所以大公司使用起来的比较放心一点。然而,正是由于有其庞大的一套架构体系和业务逻辑,所以往往需要专门的人员的进行管理和配置,这对于讲求速度的项目,对于经费和人手有限的团队而言,可能门槛就高了。

SVN是近年来流行的免费的版本库管理工具,功能可以说是中规中矩,该有的功能都具有了。有的网友评论说,SVN之类的免费软件,没有Clearcase那样的源代码访问控制功能,所有人都可以完全访问整个代码,即可以下载也可以随意修改,所以不好云云。我看到这样的评论不禁感到莞尔。事实并非如此,指望一个SCM软件去再帮你做访问权限管理,实在是有点得陇望蜀的意思;何况这个也不符合我们一直强调的单一职责原理(SRP)。版本库管理软件的主要任务还是帮你维护好你的源代码的各个版本,从而让你能够追溯,比较以及合并你团队之前的代码和当前的代码,能够高效无错的做到这一点的,就是一个优秀的工具。至于你要求的代码隐私性,不妨用其他的手段去达到,比如建立不同的项目库,针对不同的用户组开放等等。从某种角度上说,我认为Clearcase也好,任何SCM软件也好,都无法作为这位网友要求的这一点。为何?作为团队工作的代码,你不让别人看,不让别人改,那还怎么一起工作?对SCM提这样的要求,某种程度上已经失去了版本管理和合作开发的意义。

其实我真正像要向大家推荐的SCM工具是Git,这个工具我也是由同事领进的门,但是用过之后,我已经完全依赖上了它。人们接受一个工具的最大的障碍在我看来有两个,一个是经济成本,一个是时间成本,很不幸,Clearcase在这两方面成本都太高,所以你去看看个人或者中小型团队的开发者,用这个工具的凤毛麟角。而Git就好的多,经济成本几乎没有,跟SVN一样;时间成本呢有一点,需要从SVN的各种操作迁移到Git,但是也是一个非常快速和简单的过程。

Git是什么?为什么有了SVN还要用Git?有一位网友的说法我非常赞同,SVN有的功能,Git全部有,而Git还提供了比SVN更强大的功能,为什么不用Git?尤其是那些从其他SCM工具迁移到SVN的团队,你们真的可以直接采用Git,当然一般人都是用了一段SVN之后,再去用Git,然后发出感叹,天哪,还有这么好用的工具。

Git = SVN 远程服务器 || N * SVN 本地服务器,这就是Git的基本结构。注意我这里的符号,是||,我想要强调的是git的这种分布式的特性。因为我们知道,所有的颁布管理服务器都是C/S形式的,但是只有Git强调这一点,那就是,一定要有一个本地库。本地库的重要性就在于相当于我们在我们的开发分支之外,又多了一重缓冲。当我们的代码复杂到了一定程度以后,我们有时候在开发分支A上还要再建立开发分支a,对其他工具而已,我对于a的每一次提交如果我想要能够回退的话,我必须提交给server,Git也是,但是它可以只提交给本地的server,至于是不是真的有必要同步推送到远端server,你决定。本地server的另一个好处是,如果你的网络状况不好,那么你频频check in/check out/commit/update,那真的要费了你的老命了。但是本地server会完美的缓冲这一切。所以Git的业务逻辑非常符合28原理,把80%的频繁但是不那么重要的操作留在本地,把20%的重大的合并操作留给远端server,完美的提高你团队的工作效率。

最后,再来说说,Git的工具链,固然Clearcase有值得羡慕的完备的工具集比如UCM/ClearQuest之类,但是Git也不差,与Gerrit/Gitblit集成可以加速我们的代码Review过程,与Jekins集成可以达到发布和自动化测试的目的。最重要的,这些工具都是免费,而且经过了国内外的同行的广泛的验证。

有什么理由不让我给你推荐Git呢?


  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值