1.git
Git是什么? Git是目前世界上最先进的分布式版本控制系统。
SVN是集中式版本控制系统。
Git与svn比较
相同:能记录文件的所有更改记录。这样是为了大量更改后,可以有记录回到过去,而不用采用 Copy 旧代码另存为某文件,然后某个时间从大量文件中找你需要的历史记录,版本控制帮我们做到了历史记录的存储,可以方便地查询及回滚到过去的某一版本。
区别:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
SVN 是集中式系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就不方便了。
Git 是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
Git最为出色的是它的合并追踪(merge tracing)能力。
2.Gerrit
Gerrit是一个建立在Git版本控制系统之上,基于Web的代码审查工具。
Gerrit是一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。在实践中,免费、开放源代码的代码审查软件Gerrit是一个很好的选择。
它在传统的源码管理协作流程中强制性引入代码审核机制,通过人工代码审核和自动化代码验证过程,将不符合要求的代码屏蔽在代码库之外,确保核心代码多人校验、多人互备和自动化构建核验。
Gerrit适用性:几乎任何需要正式发布的项目都应当使用Gerrit来进行代码审查,如果Team中有新人,必须使用Gerrit确保代码质量。
Gerrit上进行代码审查,确认入库
Verify:工程里面接入了jenkins自动verify,结果可在上图红框内展示verify结果。
review代码,提交入库。
开发风格
gitlab的特点是一个人维系一个分支。
gerrit的特点是一个团队维系一个分支。(这里的分支对应一个业务需求)
权限管理
gitlab提供了比较多的选择,可以根据需要创建project,每个团队可以根据自己的需求管理自己的代码,方式更加的灵活。
gerrit比较单一,而且权限配置比较复杂,往往都是要联系管理员做出修改,每个团队很难做到对代码的个性化管理。
代码评审
gitlab是以merge request作为一次review,merge request中可能包含多个 commit,如果review不通过也不需要发起另一次merge request。
gerrit是以commit作为一次review,由于changeId的存在,可以对一次commit反复的进行review。
如果task划分的粒度够细的话,并不会影响各个团队的review习惯。
团队协作
gitlab可以选择公开代码,团队间可以看到互相的代码,有利于团队的协作。
gerrit由于权限控制问题,只能在权限范围内公开代码。
信息共享
gitlab 可以提供issues,wiki等功能方便开发者与使用者之间的沟通,并且gitlab可以无缝的与一些项目管理工具集成,比如:jira。
gerrit 这个方面比较欠缺。
gitlab每个项目都有自己的wiki,很方便查看。
有关gitlab+gerrit+jenkins集成
现在比较流行的CI系统,gitlab提供代码查看功能,gerrit保存真正得代码,jenkins通过plugin发布 gerrit上的代码。
这样做没有体现出gitlab的特点,而且由于gerrit的权限问题,很多代码无法放在gitlab上,gitlab沦为代码查看工具,很多功能形同虚设。
有关docker:
考虑到公司将使用docker技术,对于dockerfile存放等问题,gitlab比gerrit支持的更好(因为权限,文件查看的问题)。
有关CI:
jenkins提供了plugin,可以通过从gitlab上拉取代码直接部署(已测试成功,CA采用sshkey)。
总结
gerrit作为谷歌管理安卓项目的版本管理工具还是有其优点的,
多部门之间的权限隔离,强制review的机制都是其优点,
反观gitlab作为github的开源版,遵循了一套开源的流程,比较符合大多数人得习惯。
所以,通过比较,推荐使用gitlab作为版本管理工具,并且不与gerrit做集成。
本文对比了Git、Gerrit和Gitlab的区别与联系。Git是分布式版本控制系统,强调本地提交和合并追踪能力;Gerrit是基于Git的代码审查工具,适用于需要正式发布的项目;Gitlab则提供更灵活的权限管理和团队协作功能,包括代码查看、issue和wiki。在团队协作和信息共享方面,Gitlab较具优势,而Gerrit在代码审核和权限控制上有其独特价值。

2348

被折叠的 条评论
为什么被折叠?



