Gerrit是针对git的一款基于web的code review工具。最早在google的android项目上提出,现在已应用于绝大多数开源开发系统,它的特点是提交前review,也就是说只有经过review的可靠代码才会被自动merge到正式的代码库中。
在下面的两幅图中,左边的图演示通常情况下git用户的使用流程:不管是开发人员还是CI机器,都是以用户的身份从git server上fetch最新代码或者向git server push本地的最新更新。右边的图演示使用了Gerrit的工作流程:Gerrit中控制着两部分数据,一部分是Authoritative Repository,代表正式的代码库,另一部分Pending Changes代表所有用户提交上来但是还未经review通过的代码。这时有了一个新的角色reviewer,通常是某个developer,也可以是架构师或专家,他从gerrit上fetch这些change,并进行review,一旦review通过,这些change就会自动submit到正式的代码库中。相对于左图而言,git用户从gerrit上获取代码时取的是可靠的,经过review的正式版本库,但是向server上推送本地的更新时,必须要在change list上排队等待review。