基于Gerrit进行代码的实时同步

MuYusen 于 2023-08-08 发布 本文总阅读量

在多site协作开发或多公司的合作项目中,我们一般会使用 “主Gerrit做代码评审,同时建立多个从镜像下载代码”,开发同事可以从镜像中下载代码,而往Gerrit上提交代码,这样,可以减轻主Gerrit的服务器压力和各site的带宽压力。

所以,Gerrit和代码镜像间的实时同步是必要的。

一般有两种方式。

第一个是主推的方式,在主Gerrit上配置 replication 插件。主Gerrit上的任何改动,都会同步更新到各个配置到的从镜像中。

第二个是从拉的方式,监听主Gerrit上的事件活动,在特定的镜像仓库目录下面git fetch --all

$ ssh -p 29418 review.example.com gerrit stream-events
{"type":"comment-added",change:{"project":"tools/gerrit", ...}, ...}
{"type":"comment-added",change:{"project":"tools/gerrit", ...}, ...}

具体使用哪种方式,示情况而定。