GitHub - 提交者的块合并 PR

GitHub - block merge PR by committers

我正在寻找一种通过 GitHub 设置或 CircleCI 设置来阻止参与 PR(创建 PR 或提交)的人能够合并 PR(甚至批准它)的方法。 到目前为止,我有一个需要批准的分支的保护,但是 post-批准我作为 PR 创建者和提交者我仍然能够合并。

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

  • 所有 PR 在合并之前必须进行代码审查
  • 代码的审阅者需要是管理员
  • 代码的审阅者需要在 CODEOWNERS 文件中
  • 一部分状态检查都需要通过

对于所有这些规则,假设一旦满足这些规则,任何对存储库具有写入权限的人都可以合并 PR。我很好奇 - 你想在什么情况下阻止这种情况?

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

我很好奇 - 为什么这是你想做的事情?

您需要能够

prevent the person that is involved in PR (create PR or make a commit) to be able to merge PR (or even approve it)

已创建 PR 的贡献者无法在 GitHub 中默认批准或请求更改,因此已解决。

由于 Pull Request 是一项 GitHub 功能,PR 合并目前只能通过两种方式阻止

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

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

或通过允许合并提交、压缩合并变基合并,如回购设置下的合并按钮部分所示

如果您使用的是 GitHub 企业版,则可以使用预接收挂钩 (documentation) like below and ensure that self merging PRs are blocked (This eg is here)

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 合并按钮。