2023年6月25日发(作者:)
第32章 Gerrit代码审核服务器
第32章 Gerrit 代码审核服务器
谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的
repo,这在前面第25章已经详细讨论过。另外一个重要的创新就是 Gerrit —— 代码审核服务器。Gerrit 为 Git 引入的代码审核是强制性的,也就是说除非特别的授权设置,向 Git 版本库的推送必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中。
首先贡献者的代码通过 git 命令(或 repo 封装)推送到 Gerrit 管理下的 Git 版本库,推送的提交转化为一个一个的代码审核任务,审核任务可以通过 refs/changes/ 下的引用访问到。代码审核者可以通过 Web 界面查看审核任务、代码变更,通过 Web 界面做出通过代码审核或打回等决定。测试者也可以通过 refs/changes/ 之下的引用获取修订然后对其进行测试,如果测试通过就可以将该评审任务设置为校验通过(verified)。最后经过了审核和校验的修订可以通过
Gerrit 界面中的提交动作合并到版本库对应的分支中。
Android 项目网站上有一个代码贡献流程图1,详细地介绍了 Gerrit 代码审核服务器的工作流程。翻译后的工作流程图见图32-1。
1
/source/
1Git权威指南——自排稿 第32章 Gerrit代码审核服务器
图32-1:Gerrit 代码审核工作流
32.1 Gerrit 的实现原理
Gerrit 更准确地说应该称为 Gerrit2。因为 Android 项目最早使用的评审服务器 Gerrit 不是今Git权威指南——自排稿
2第32章 Gerrit代码审核服务器
天这个样子的。最早版本的 Gerrit 是用 Python 开发运行于 Google App Engine 上的,从 Python
之父 Guido van Rossum 开发的 Rietveld 分支而来。在这里要讨论的 Gerrit 实为 Gerrit2,是用
Java 语言实现的1。
1. SSH 协议的 Git 服务器
Gerrit 本身基于 SSH 协议实现了一套 Git 服务器,这样就可以对 Git 数据推送进行更为精确的控制,为强制审核的实现建立了基础。
Gerrit 提供的 Git 服务的端口并非标准的 22 端口,默认是 29418 端口。这个端口是可以被发现的,当访问 Gerrit 的 Web 界面时可以得到这个端口。对 Android 项目的代码审核服务器,访问 /ssh_info 就可以查看到 Git 服务的服务器域名和开放的端口。下面用 curl 命令查看网页的输出。
$ curl -L -k /ssh_info
29418
2. 特殊引用 refs/for 和 refs/changes
Gerrit 的 Git 服务器,禁止用户向 refs/heads 命名空间下的引用执行推送(除非特别的授权),即不允许用户直接向分支进行提交。为了让开发者能够向 Git 服务器提交修订,Gerrit 的
Git 服务器只允许用户向特殊的引用 refs/for/
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687692133a32134.html
评论列表(0条)