Gerrit是Google公司在Android开源项目中GIT应用上的两个重要创新之一,基于 Web 的代码评审和项目管理的工具,它是为Git引入的代码审核服务器,其代码审核是强制性的,就是说,向Git版本库的推送必须要经过Gerrit服务器,修订代码必须经过代码审核的工作流程之后,经批准才能合并到正式版本库中。
一、基本原理
1、基于SSH的GIT服务器
Gerrit是基于SSH协议实现的GIT服务器,其端口不是标准的22,而是29418端口。
2、特殊引用
Gerrit的GIT服务器,禁止用户向refs/heads下的引用执行推送,即不允许用户直接向分支进行提交。为了让开发者能够想GIT服务器提交修订代码,Gerrit只允许用户向特殊的引用refs/for/<branch-name>下执行推送,其中<branch-name>是开发者的工作分支。向refs/for/<branch-name>下推送并不会在其中创建引用,而是为新的提交分配一个ID,称为review-id,并为该review-id的访问建立如下格式的引用refs/changes/nn/<review-id>/m,其中:
- review-id是Gerrit为评审任务顺序而分配的全局唯一标识。
- nn是review-id的后两位数,位数不足补零。
- m是修订号,一般review-id的首次提交修订号