9年前在公司内网部署了Gerrit2,一直使用至今。是时候重现看看Gerrit2和GitLab了...
Gerrit 与 GitLab
Gerrit在特定领域(如Android开源项目)和特定组织中仍然很受欢迎,
GitLab的用户群更加广泛。GitLab提供了更全面的功能和工具。
Gerrit
Gerrit: Gerrit是由Google的一位工程师Shawn Pearce于2008年创建的。最初,Gerrit是为了解决Android开源项目的代码审查需求而开发的。Gerrit提供了一种基于Web的代码审查工作流,允许开发人员在代码变更之前进行同行评审和讨论。它的目标是提供一个高效的代码审核平台,以促进团队合作和代码质量的提高。
GitLab
GitLab: GitLab是由Dmitriy Zaporozhets和Valery Sizov于2011年创建的。最初,GitLab只是一个基于Git的代码托管平台,它提供了类似于GitHub的功能,但在自托管方面更加强调。然而,随着时间的推移,GitLab逐渐发展成为一个全面的DevOps平台,为软件开发生命周期的各个阶段提供支持。
对比
Gerrit2界面简单,专注于代码审核以变更集管理:强调逐行代码审核,基于变更集每个变更都是独立的单元,权限控制更细。
Gitlab功能更全面,是一个DevOps平台。单就代码审核的话,比Gerrit2逊色。
特性 | Gerrit | GitLab |
---|---|---|
主要用途 | 代码审查和代码仓库管理 | DevOps 平台,集成代码仓库、CI/CD、项目管理 |
代码审查 | 强调逐行代码审查,适用于大规模代码库 | 提供代码审查功能,但不如 Gerrit 专注 |
CI/CD | 需要集成其他工具(如 Jenkins) | 内置 CI/CD 功能,支持自动化流水线 |
分支管理 | 基于变更集(Change Set),每个变更都是一个独立的单元 | 基于 Git 分支模型,支持分支保护和合并请求 |
权限控制 | 细粒度权限控制,适合复杂项目 | 提供角色和权限管理,适合团队协作 |
用户界面 | 相对简洁,专注于代码审查和变更集管理 | 现代化界面,包含丰富的项目管理功能 |
集成工具 | 需要手动集成多种工具和服务 | 集成了大量 DevOps 工具,如 Docker、Kubernetes |
易用性 | 学习曲线较陡峭,适合有经验的开发团队 | 易于上手,适合各种规模的开发团队 |
托管选项 | 主要为自托管 | 提供自托管和 GitLab.com 托管服务 |
社区与支持 | 社区支持,企业版需付费支持 | 社区版免费,企业版提供商业支持 |
扩展性 | 可通过插件和脚本扩展功能 | 丰富的 API 和插件市场,易于扩展 |
其他人总结
- https://zhangmengpl.gitbooks.io/gitlab-guide/content/gitlabvsgerrit.html
风格
1 2 |
|
权限
1 2 |
|
评审
1 2 3 |
|
团队协作:
1 2 |
|
共享
1 2 3 |
|
维基(MediaWiki) gitlab迁移
2020年,从gerrit迁移到gitalb。他们做了大量评估工作
操作比较
- https://www.mediawiki.org/wiki/GitLab/Gerrit_to_GitLab
比如:
- gerrit能够 -2, -1, 0, 1, 2打分。-2可以阻挡后续进行
- gerrit有dashboards看板,待review的change。可以设置email通知
- gerrit方便添加reviewer人员
- gerrit的评审是基于 commit 而不是 branch 的,粒度更细
迁移决定:
- GitLab consultation - MediaWiki
- [From Gerrit to Gitlab: join the discussion – [WM:TECHBLOG]] (wikimedia.org)
- GitLab - MediaWiki
注意:mediawiki不使用 gitlab的 wiki 等功能,只是用git相关的功能以及review
其他人对 gerrit抱怨
主要是gerrit与后面主流的github、gitlab、bitbucket工作流不太一样。