Gerrit如何实现其“神奇”的refs



我目前正在实现Gerrit作为中心代码审查系统。在试图理解Gerrit的来龙去脉的过程中,我被下面的句子卡住了。摘自Gerrit文件:

由于Gerrit在其Gerrit拥有自己的流程空间,可以完全控制更新存储库,并向git push发送什么响应由最终用户或由repo upload调用的客户端。这允许Gerrit将提供神奇的裁判,例如新裁判的refs/for/*变更提交和变更替换的CCD_ 4。

上面的语句是什么意思,特别是这句话:"由于Gerrit在其自有流程空间"?我试着搜索相关的问题,但我找到的最接近的问题是为什么使用git-push gerrit HEAD:refs/for/master而不是git-push-origin-master,但它没有充分解释服务器堆栈的实现如何允许gerrit提供神奇的refs。如果以前确实有人问过类似的问题,我们深表歉意。非常感谢。

即使在"普通git"中也不难实现神奇的ref。您只需要在远程存储库中实现pre-receiveupdate挂钩,即可识别推送的目标分支,并对其执行任何操作(例如,将推送存储在另一个分支中)。

尽管我没有任何实现细节(我想它要复杂得多),但这与Gerrit的行为是一样的。您推送到refs/for/master,它将其存储在refs/changes/66/5066/2分支中(例如)。

有一些例子。

相关内容

  • 没有找到相关文章

最新更新