21.1.2 Gerrit特殊的集中式协同模型
对于在一个相对固定的团队内部使用集中式协同模型没有问题,因为大家彼此信赖,都熟悉项目的相关领域。但是对于公开的项目(开源项目)来说,采用集中式的协同模型,必然只能有部分核心人员具有“写”权限,很多有能力的参与者会被拒之门外,这不利于项目的发展。因此集中式协同模型主要应用在公司范围内和商业软件开发中,而不会成为开源项目的首选。
2.强制代码审核的集中式协同模型
Android项目采用了独树一帜的集中式管理模型——通过Gerrit架设的审核服务器对提交进行强制审核。Android是由近200个Git版本库组成的庞大的项目,为了对庞大的版本库进行管理,Android项目开发了两个工具repo和Gerrit进行版本库的管理。其中Gerrit服务器为Android项目引入了特别的集中式协同模型。
Gerrit服务器通过SSH协议管理Git版本库,并实现了一个Web界面的评审工作流。任何注册用户都可以参与到项目中来,都可以将Git提交推送到Gerrit管理下的Git版本库(通过Gerrit启动的特殊SSH端口)。Git推送不能直接推送到分支,而是推送到特殊的引用refs/for/<branch-name>,此提交会自动转换为形如refs/changes/<nn>/<review-id>/<patch-set>的补丁集,此补丁集在Gerrit的Web界面中显示为对应的评审任务。评审任务进入审核流程,通过相关负责人的审核后才被接受,并合并到正式的版本库中。
本书的第5篇第32章会详细介绍Gerrit代码审核服务器的部署和使用。