Code Owners 审查设置
在仓库设置中,可以对 CODEOWNERS 审查行为进行更细粒度的配置。进入「仓库设置 → 合并请求 → CODEOWNERS 审查设置」即可找到以下选项。
设置项说明
审查计数模式
设置 CODEOWNERS 审查如何计入最小审查人数门禁。
| 模式 | 说明 |
|---|---|
| 合并计数模式 | CODEOWNERS 审查人数与普通审查人数合并计算 |
| 独立计数模式 | CODEOWNERS 审查不计入总审查人数,普通审查单独计算 |
Code Owner 协同审批模式
控制 CODEOWNERS 规则中多人指派时的审批逻辑。
| 模式 | 说明 |
|---|---|
| 启用 | 每行规则中任意一名 Code Owner 批准即视为该规则通过 |
| 关闭 | 每行规则中所有 Code Owner 都必须批准才能通过 |
门禁判断逻辑
门禁是否通过的判断分为两个步骤:
第一步:CODEOWNERS 规则是否通过
由「协同审批模式」决定 :
| 协同审批 | 规则通过条件 |
|---|---|
| 启用 | 任一 Owner 批准 |
| 关闭 | 所有 Owner 都批准 |
如果 CODEOWNERS 规则未通过 → 门禁直接不通过,不再判断第二步。
第二步:审查人数是否满足
由「计数模式」决定(前提是第一步已通过):
| 计数模式 | 满足条件 |
|---|---|
| 合并计数 | CODEOWNERS 审查人数 + 普通审查人数 ≥ 最小审查人数 |
| 独立计数 | 普通审查人数 ≥ 最小审查人数 |
设置组合效果
示例场景
CODEOWNERS 文件:
*.js @user1 @user2
PR 变更: 修改了 app.js
最小审查人数: 2
组合效果对照表
| 协同审批 | 计数模式 | CODEOWNERS 规则 | 审查人数情况 | 门禁结果 | 说明 |
|---|---|---|---|---|---|
| 启用 | 合并计数 | @user1 通过 | CODEOWNERS 1人 + 普通 1人 | 通过 | 1+1=2 ≥ 2 |
| 启用 | 合并计数 | @user1 通过 | CODEOWNERS 1人 + 普通 0人 | 不通过 | 1+0=1 < 2 |
| 启用 | 合并计数 | @user1 和 @user2 都通过 | CODEOWNERS 2人 + 普通 0人 | 通过 | 2+0=2 ≥ 2 |
| 启用 | 独立计数 | @user1 通过 | 普通 2人 | 通过 | 普通 2 ≥ 2 |
| 启用 | 独立计数 | @user1 通过 | 普通 1人 | 不通过 | 普通 1 < 2 |
| 关闭 | 合并计数 | @user1 和 @user2 都通过 | CODEOWNERS 2人 + 普通 0人 | 通过 | 2+0=2 ≥ 2 |
| 关闭 | 合并计数 | @user1 和 @user2 都通过 | CODEOWNERS 2人 + 普通 1人 | 通过 | 2+1=3 ≥ 2 |
| 关闭 | 合并计数 | @user1 通过,@user2 未通过 | - | 不通过 | 前提不满足,直接不通过 |
| 关闭 | 独立计数 | @user1 和 @user2 都通过 | 普通 2人 | 通过 | 普通 2 ≥ 2 |
| 关闭 | 独立计数 | @user1 通过,@user2 未通过 | - | 不通过 | 前提不满足,直接不通过 |
适用场景
| 组合 | 适用场景 |
|---|---|
| 协同审批 + 合并计数 | 团队协作,灵活审查:CODEOWNERS 按行最少人数,与普通审查合并计算 |
| 协同审批 + 独立计数 | 分工明确:CODEOWNERS 规则通过即可,普通审查需满足人数要求 |
| 非协同 + 合并计数 | 关键代码严格审查,所有 Owner 必须批准,可与普通审查合并计算 |
| 非协同 + 独立计数 | 完全分离:所有 Owner 必须批准,普通审查也需满足人数要求 |