在github's docs他们提到 protected 分支是“让你的项目和 pull 请求有条理和安全”的一种方式。然而,在做了一些研究之后,模型并没有真正增加安全性。以下描述不准确吗?
github 中的 protected 分支依赖于使用状态 api 将提交标记为“成功”。然后,github 将阻止 merge 、强制推送等到所需的分支(即 master),除非要 merge 的 pull 请求已通过 API 标记为成功。
问题在于,任何拥有存储库推送权限的人都可以通过 API 手动将成功状态应用于他们的提交。
例如:
- 用户向 master 发出 pull 请求,而 master 的构建测试失败
- github 将不允许 merge pull 请求,因为状态为失败
- 开发人员可以绕过测试检查手动使用 API 将他们的提交标记为成功
- 失败的代码进入 protected 分支
Protected Branches 可以提供一些不错的代码质量检查,但由于 Status API 没有任何限制,因此没有什么可以防止这些检查被绕过。
最佳答案
我在与 Github 交谈后确认,如果你有推送访问权限,那么你也可以使用状态 api;没有更精细的控制可用。
关于github protected 分支机构不提供任何真正的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37622068/