GitHub-提交者阻止合并PR

时间:2020-06-26 19:27:34

标签: github merge pull-request circleci protection

我正在寻找一种通过GitHub设置或CircleCI设置的方法,以防止参与PR(创建PR或进行提交)的人员能够合并(甚至批准)PR。 到目前为止,我拥有需要批准的分支机构的保护,但作为PR创建者和提交者的批准后我仍然可以合并。

2 个答案:

答案 0 :(得分:4)

您需要能够

防止参与PR的人(创建PR或进行提交)能够合并(甚至批准)PR

默认情况下,创建PR的贡献者无法在GitHub中批准或请求更改,因此已经解决了这一问题。

由于请求请求是GitHub的功能,因此PR合并目前只能通过两种方式阻止

  • 使用GitHub的设置
  • 使用预接收挂钩(仅适用于GitHub Enterprise)

使用GitHub的设置,您只能通过要求拉取请求审阅,状态检查通过,签名提交或线性历史记录来阻止合并,如分支保护设置所示。

enter image description here

或通过允许合并提交,压缩合并 rebase合并,如回购设置下“合并”按钮部分所示

enter image description here

如果您在GitHub Enterprise上,则可以使用如下所示的预接收钩子documentation),并确保阻止自合并PR(例如{{3} })

if [[ "$GITHUB_VIA" = *"merge"* ]] && [[ "$GITHUB_PULL_REQUEST_AUTHOR_LOGIN" = "$GITHUB_USER_LOGIN" ]]; then
    echo "Blocking merging of your own pull request."
    exit 1
fi

exit 0

除上述内容外,当前没有其他方法可以阻止GitHub上的自合并PR。使用CircleCI或任何其他CI工作流只能阻止所有人(如果您选择在GitHub上进行状态检查)或任何人的合并,因为它无法控制PR合并按钮。

答案 1 :(得分:2)

问候!最简洁的答案是不。现在更长的答案! GitHub支持启用master branch protection。这可以帮助您执行各种规则,例如:

  • 所有PR都必须先经过代码审查,然后才能合并
  • 代码的审阅者必须是管理员
  • 代码审阅者必须位于CODEOWNERS文件中
  • 部分状态检查都需要通过

对于所有这些规则,假设是一旦满足它们,对存储库具有写访问权的任何人都可以合并PR。我很好奇-您想在什么情况下避免这种情况?

现在进入坏主意。如果这很重要-您可以采取激烈的措施,确保没有人要负责合并PR :)您可以添加映射到机器人帐户的代码所有者,确保机器人帐户执行批准在PR可以合并之前。为此,您可以在对PR事件触发的自定义GitHub动作中编写逻辑,以确定是否应合并PR,并在满足所有适当条件的情况下自动合并。

我很好奇-为什么要这么做?