合并请求是进入 main 的唯一入口。说明只写「改了什么」,评审的人只能从差异里反推意图。
如果是第一次提合并请求,整段抄合并请求模板。
这份说明里的四栏(怎么验证、人定的选择、未查项、新增依赖),是不是都填了具体内容或明确的「无」?
提交前先看这四栏:怎么验证、人定的选择、未查项、新增依赖,每一栏都要有具体内容或明确的「无」。留白或写「略」,评审人会直接退回。今天补的成本是 5 分钟;不补,成本是评审人 10 分钟加一次猜错。
六步,每步都有一个人负责、一个命令或一个时限。跳过哪一步,后面接手的人就要补回来。
git switch -c feat/notes-paging,标题带需求编号,例如 [#412] 笔记列表分页。make check 在合并请求上自动执行。退出码非零就停在这一步,不占评审人的时间。CODEOWNERS 指派的复核人另做 30 分钟深审。边界:一个人做一个项目时,「至少一名评审人」这步不适用。替代做法是把门禁调严——覆盖率 ≥ 80%、圈复杂度 ≤ 8,并在说明里写明这次没有人工评审。不要把批准栏空着不解释,那会让后面读历史的人以为漏了一步。
四栏怎么填,后面那份示例照抄改数字就行。
放进 .github/ 目录后,每次新建合并请求会自动带上这份内容。
## 怎么验证的 - 命令: - 结果: - 手工复验: ## 人定的选择 - 决定的: - 助手建议: - 否掉的理由: ## 未查项 - 未查: - 为什么不查: ## 新增依赖 - 无 / 有: - 若新增:库名与许可、替代方案、移除方式
把下面的内容替换进上面模板对应的位置。
## 怎么验证的 - 命令:make check - 结果:132 passed;新增行覆盖率 74%;gitleaks 与 pip-audit 均无命中 - 手工复验:用别的班级 scope_id 请求 GET /notes,返回 404,正文与「记录不存在」一致 ## 人定的选择 - 决定的:分页默认 20 条;空结果文案为「还没有记录」 - 助手建议:默认 50 条,空结果复用搜索页的「没有找到相关内容」 - 否掉的理由:一屏放不下 50 条;复用搜索文案会让用户以为是自己搜索词的问题 ## 未查项 - 未查:同一 note 行的并发写入行为 - 为什么不查:本学期没有压测环境;已记录到 docs/high-risk.md 的待办,下周补 ## 新增依赖 - 有:httpx==0.27.0(MIT) - 替代方案:标准库 urllib.request,不支持连接池与超时重试,已排除 - 移除方式:只在 app/clients/llm.py 里引用,换掉这一个文件即可
四栏里「人定的选择」最容易被当成形式。它真正的用处是出事后能分清边界:模型建议了什么、否掉了什么。这一栏和溯源与责任里的尾部字段是同一份信息的两个落点——一处写在合并请求说明,一处写在提交信息。
## 怎么验证的 - 命令:make check - 结果:全部通过 ## 人定的选择 - 决定的:分页默认每页 20 条 - 助手建议:分页默认每页 20 条 - 否掉的理由:无 ## 未查项 - 未查:无 ## 新增依赖 - 无
认它的办法:看「人定的选择」里有没有一条与助手建议相反。四栏都填了、格式也对,可「决定的」和「助手建议」一字不差、「否掉的理由」写无——这份说明是助手写的,人一个字没动。真正过审的说明里,通常至少有一条是助手不赞成、人坚持下来的。
这张表按改动类型给出要看的地方和一条判据。别对着一份只改文档的请求审满 30 分钟。
| 改动类型 | 看哪里 | 判据 | 不看什么 |
|---|---|---|---|
| 文档与注释 | 与既有文档是否矛盾 | 没有和规约冲突的表述 | 措辞风格 |
| 新增函数或模块 | 输入校验、失败路径、是否有测试 | 存在一条边界用例,且不吞掉异常 | 命名偏好 |
| 接口行为变化 | 字段增删、状态码、向后兼容 | 旧调用方不改也能工作 | 实现细节 |
| 权限与身份 | 判定发生在哪一层、有没有绕过路径 | 过滤条件来自会话,不来自请求体 | 测试是否通过 |
| 金额与幂等 | 精度、舍入、重复提交 | 重复提交不产生第二笔扣减 | 测试是否通过 |
| 数据删除与迁移 | 删除范围、备份、回滚步骤 | 执行前有 SELECT,回滚步骤可执行 | 脚本是否跑过 |
| 新增依赖 | 说明的「新增依赖」一栏、仓库内是否已有同类 | 填了库名、许可、替代方案、移除方式 | 库本身流不流行 |
| 指令与配置文件 | AGENTS.md、规则、钩子、工作流的逐行改动 | 没有新增「不必检查」这类表述 | 改动行数多少 |
写评论时先带前缀——阻塞、建议、提问三选一,提请求的同学才知道这条要不要改。
直接照这三行的句式写。
阻塞:未登录时仍从请求体读取了 scope_id,必须改为从会话读取。24 小时内回复。 建议:这个函数已超过复杂度上限(当前 12,上限 10),可以拆出校验。可由作者决定是否本次改。 提问:预发环境也会跑这条迁移吗?影响我是否要准备回滚。
时限按前缀走:阻塞项的提出者在 24 小时内回复并改完;建议项可以留到下一次合并请求,但要在本次说明里记一句「留下未改」;提问由提请求的同学回复,来回超过 3 轮就当面讲——评论串拉到没人愿意读的时候,这条意见等于没提。