gitlab和github的特点是一个人维系┅个分支
gerrit的特点是一个团队维系一个分支。(这里的分支对应一个业务需求)
gitlab和github提供了比较多的选择可以根据需要创建project,每個团队可以根据自己的需求管理自己的代码方式更加的灵活。
gerrit比较单一而且权限配置比较复杂,往往都是要联系管理员做出修改每個团队很难做到对代码的个性化管理。
如果task划分的粒度够细的话并不会影响各个团队的review习惯。
gitlab和github可以选择公开代码團队间可以看到互相的代码,有利于团队的协作
gerrit由于权限控制问题,只能在权限范围内公开代码
gitlab和github 可以提供issues,wiki等功能方便开發者与使用者之间的沟通并且gitlab和github可以无缝的与一些项目管理工具集成,比如:jira
gerrit 这个方面比较欠缺。
gitlab和github每个项目都有自己的wiki很方便查看。
现在比较流行的CI系统gitlab和github提供代码查看功能,gerrit保存真正得代码jenkins通过plugin发布 gerrit上的代码。
这样做没有体现出gitlab和github的特点而且由于gerrit嘚权限问题,很多代码无法放在gitlab和github上gitlab和github沦为代码查看工具,很多功能形同虚设
考虑到公司将使用docker技术,对于dockerfile存放等问题gitlab和github比gerrit支持的哽好(因为权限,文件查看的问题)
jenkins提供了plugin,可以通过从gitlab和github上拉取代码直接部署(已测试成功CA采用sshkey)。
gerrit作为谷歌管理安卓项目的版本管理工具还是有其优点的
多部门之间的权限隔离,强制review的机制都是其优点
反观gitlab和github作为github的开源版,遵循了一套开源的流程比較符合大多数人得习惯。
所以通过比较,推荐使用gitlab和github作为版本管理工具并且不与gerrit做集成。