PR 在周二评审通过,作者周四又推了 6 个提交,改动涉及权限判断。合并时显示 approved,新提交一行都没被看过,上线后越权接口被扫出来。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

gh api repos/o/r/branches/main/protection --jq '.required_pull_request_reviews'
gh pr view 132 --json commits --jq '[.commits[].oid] | length'

评审通过是对某个提交状态的认可,后续提交没有让审批失效。分支保护只要求有 approve,不要求覆盖最新提交。这一点先确认清楚,后面就不用反复试。

「评审后改动」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,开启 dismiss stale reviews 新提交自动作废旧审批;要求最后一个提交也有 approve 才能合并;追加提交时在 PR 里说明改了什么 通知原评审人;合并前对比 approve 时的 commit sha 和当前 head。

改完照着核一遍,追加提交后 PR 状态回到待评审,合并按钮置灰,直到有人对新提交重新 approve。

作者 9823189