我正在寻找通过GitHub(或CircleCI)设置的方法,以防止打开或提交拉取请求的人能够合并或批准该拉取请求。
到目前为止,我已经保护了需要批准的分支,但是在批准后,作为PR创建者和提交者,我仍然能够合并。
到目前为止,我已经保护了需要批准的分支,但是在批准后,作为PR创建者和提交者,我仍然能够合并。
你需要防止参与 PR(创建 PR 或提交代码)的人能够合并 PR(甚至批准它)。
GitHub 默认情况下不允许贡献者创建的 PR 自己批准或请求更改,所以已经考虑到这点了。
由于 Pull Request 是 GitHub 的一个特性,目前只有两种方法可以阻止 PR 合并:
- 使用 GitHub 的设置
- 使用预接收挂钩(仅适用于 GitHub Enterprise)
通过使用 GitHub 的设置,您只能通过要求通过拉取请求审查、状态检查、签名提交或线性历史来阻止合并,如在分支保护设置下所示。
或者通过在存储库设置下的合并按钮部分显示的允许合并提交、压缩合并或变基合并。
如果您使用的是 GitHub Enterprise,则可以使用预接收挂钩来阻止自我合并 PR (文档)。下面是一个示例,确保阻止自我合并的 PR(此示例在此处)。
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合并按钮。
简短的回答是否定的。
GitHub 支持启用主分支保护。这可以帮助您强制执行各种规则,例如:
对于所有这些规则,假设满足了它们,具有写入访问权限的任何人都可以合并 PR。我很好奇 - 在什么情况下您想要防止这种情况发生?
现在谈论不好的想法。如果这非常重要 - 您可以采取极端措施,确保没有人负责合并 PR。您可以添加一个映射到机器人帐户的代码所有者,确保机器人帐户在合并之前执行审核。为此,您可以编写自定义 GitHub 动作中的逻辑,该动作在 PR 事件上触发,以确定是否应合并 PR,并在满足所有适当条件时自动合并。