【问题标题】:git / gerrit prevent develop branch to be merged into stable / testing branchgit / gerrit 防止将开发分支合并到稳定/测试分支中
【发布时间】:2011-11-20 08:49:27
【问题描述】:

使用 Gerrit 很容易意外地将开发分支中的不稳定代码合并到稳定分支中:

$ git checkout develop
$ commit
$ git push origin HEAD:refs/for/stable

在 Gerrit 中,提议的更改是否来自开发分支并被合并到稳定分支中并不是很清楚。有没有办法在 git 或 Gerrit 中防止这种合并发生?

更新: 现在我们使用自定义命令推送到 gerrit,它会找到它所基于的 origin 中的最后一个分支,并且只允许推送到该分支。

【问题讨论】:

  • 该问题的解决方案完全阻止了推送。我想推送,但想防止将开发(或从开发创建的任何分支)推送到 refs/for/testing 或 refs/for/stable
  • 所以你必须为你的远程仓库制作自定义的预接收钩子
  • ...gerrit 不可能:'(
  • 您的主题摘要说“已合并”,但您的示例仅显示了对 gerrit 的推送,在获得批准之前不会合并。如果您想阻止推送,那么您的脚本似乎是正确的。如果您想阻止合并(在 gerrit 中),那么您可以转到 Project / Access 选项并确保分支不允许提交者。

标签: git merge branch gerrit


【解决方案1】:

目前软件中没有选项可以防止您犯这种错误。

不过,您可以做一些事情:

  • 培训人员,让他们在进行审核时始终检查分支名称
  • 设置“推送到正确分支”类别(howto here),选项包括 +1“正确分支”、0“无分数”、-1“错误分支”,因此审阅者必须正式确认他检查了分支名称
  • 设置一个持续集成工具来自动审查和评分上述类别(Jenkins 有一个 plugin 你可以使用)

请分享一下用于推送到 gerrit 的自定义命令吗?

【讨论】:

    【解决方案2】:

    一种方法可能是这样的:

    隔离用户

    • 提交者组 - 您希望只提交“开发”而不是“主要”的所有开发人员
    • Integrator 组 - 可以推送和合并到“主”的特权开发人员,如果需要,可以创建更多分支。

    在 'git' 中只允许推送访问 'Integrator group' 的成员(如上所述)。

    免责声明:我没有 Gerrit/Git 管理员角色/配置经验,所以老实说,我不知道 'git' 将如何获取有关任何用户所属组的信息(恕我直言,这仍然可以手动实现) .

    【讨论】:

      【解决方案3】:

      您应该在 Gerrit 中为该 repo 的“开发”分支设置特定的访问控制。

      这样设置:

      Reference: refs/for/refs/heads/develop
      Push: Allow: <group>
      

      不是这样的:

      Reference: refs/for/refs/heads/*
      Push: Allow: <group>
      

      这样您的&lt;group&gt; 只能在“refs/for/develop”而不是“refs/for/stable”或任何其他分支上推送评论。

      【讨论】:

        猜你喜欢
        • 2011-12-30
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 2015-11-18
        • 1970-01-01
        • 2021-01-29
        • 2021-10-03
        • 2014-10-28
        相关资源
        最近更新 更多