Gerrit 的架构:把代码评审写进 Git 引用
Gerrit 的评审记录可以用 git fetch 拉下来,一次投票就是一个提交。顺着这个现象往下追:Gerrit 为什么用 JGit 自己做 Git 服务端,push 到 refs/for/main 时发生了什么,评审数据为什么从 SQL 搬进 Git,引用多到几十万个之后怎么存、怎么按权限过滤,合并时怎么保证原子性,索引和缓存怎么配合,以及多台机器之间怎么同步。
共 2 篇
Gerrit 的评审记录可以用 git fetch 拉下来,一次投票就是一个提交。顺着这个现象往下追:Gerrit 为什么用 JGit 自己做 Git 服务端,push 到 refs/for/main 时发生了什么,评审数据为什么从 SQL 搬进 Git,引用多到几十万个之后怎么存、怎么按权限过滤,合并时怎么保证原子性,索引和缓存怎么配合,以及多台机器之间怎么同步。
一次 git clone 在网络上到底交换了什么?从抓包看到的三次 HTTP 请求出发,先搭一个最小的 Git 服务器,再顺着它解决不了的问题,依次读 GitLab、Gerrit 和 walgit 的源码:存储怎么拆、引用怎么管、多副本怎么保持一致。