gpt4 book ai didi

git - Gerrit 作为审查工具,而不是记录存储库

转载 作者:IT王子 更新时间:2023-10-29 01:30:41 25 4
gpt4 key购买 nike

我从快速入门指南中创建了一个 gerrit 实例。

我的公司使用带有 pull 请求的 BitBucket,偶尔使用坩埚进行代码审查。我们将 Jenkins 与广泛的与 BitBucket 相关联的构建/部署管道结合使用。

我们希望集成 gerrit 进行代码审查,因为它能够在审查被接受之前暂存提交并构建/验证它们。

基本上,我希望 gerrit 的“提交”按钮将上游推送到 BitBucket。 (我宁愿不尝试通过复制来做到这一点;由于公司惯性,我想将 BitBucket 维护为上游/记录存储库。)

有人对如何完成此任务有任何建议吗?这种能力是否存在,或者这是一个新颖的想法?

最佳答案

Gerrit 通过围绕 Gerrit 本身托管的实际 Git 存储库提供(或多或少)薄包装器来实现其代码审查功能。据我所知,无法直接在 Gerrit 中集成外部 Git 存储库。

这意味着在使用 Gerrit 时,Git 存储库需要托管在 Gerrit 本身中。因此,您需要在 Gerrit 实例中维护 BitBucket 存储库的完整副本。所以这个问题基本上可以归结为保持两个 Git 存储库同步

将新提交从 BitBucket 同步到 Gerrit

由于您已经在使用 Jenkins,我建议您在将新提交推送到 BitBucket 存储库时使用 Jenkins 构建来更新您的 Gerrit 存储库。为此,您需要:

  1. 具有直接推送功能的 Gerrit 用户。为此,您需要授予 Gerrit 项目中 refs/heads/* ref 的 Push 权限。 Jenkins 将使用此用户。请注意不要将此权限授予任何最终用户,否则他们将能够通过直接推送来绕过代码审查。
  2. 一个 Jenkins 作业,配置为在新提交被推送到您的 BitBucket 存储库时构建。在该作业中,只需将所有分支推送到您的 Gerrit 实例即可。
  3. 配置 BitBucket 服务 Hook 以触发您的 Jenkins 构建(为此,您的 Jenkins 实例将需要可公开访问;否则只需将您的 Jenkins 作业的时间表设置为较短的时间间隔,以最大限度地减少同步延迟)。<

将新提交从 Gerrit 同步到 BitBucket

在 Gerrit 中提交代码审查时,需要将新的提交推回到 BitBucket。通常,我建议为此使用复制插件。下面是相应配置文件的样子(在 Gerrit 目录中的 etc/replication.config 中):

[remote "bitbucket"]
url = ssh://git@bitbucket.org/<your-user>/${name}.git
push = +refs/tags/*:refs/tags/*
push = +refs/heads/*:refs/heads/*
mirror = true
replicateOnStartup = true
replicatePermissions = false

既然您提到您希望避免使用复制,您也可以使用 Jenkins 作业将提交从 Gerrit 同步回 BitBucket。为了尽量减少延迟,您可以使用 Gerrit Trigger plugin for Jenkins (无论如何,您都希望将其用于预提交检查)。或者,您可以使用放置在 hooks/ref-updated 中的自定义 Gerrit Hook 来触发 Jenkins 构建(如果您希望我详细说明,请留下评论)。

希望这对您有所帮助!

关于git - Gerrit 作为审查工具,而不是记录存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com