合并请求从创建到合入,建议拆成创建、预检、评审、审批、合入、合入后确认六个节点。每个节点写清输入、动作、输出和完成标志,并把职责落到作者、评审人、审批人和合入执行人身上。团队从零建立流程时,先定分支策略与合入条件,再定评审规模与审批门槛,最后用模板和检查表固化,流程才能稳定执行。
要点总览(TL;DR)
- 把合并请求流程拆成创建、预检、评审、审批、合入、合入后确认六个节点,每个节点写清输入、动作、输出和完成标志,职责落到作者、评审人、审批人、合入执行人。
- 创建节点用模板固定标题、描述、关联工作项、变更类型和回退说明;预检覆盖构建、静态检查、单元测试和冲突检测,失败由作者修复后重新触发。
- 评审人按业务、模块负责人、架构三类角色分配,意见分阻塞、建议、疑问三级;审批门槛由最少批准数、必需检查通过和阻塞意见清零组成,紧急例外需限定适用人和时限。
- 合入前逐项核对审批、检查、意见和目标分支,合入方式按合并提交、压缩、变基的适用场景选定默认方式;合入后验证目标分支构建、按需部署验证并更新工作项状态。
- 上线前用检查清单确认分支权限、模板与预检、评审审批规则、角色到人和异常回退路径,先小范围运行一到两周再扩大范围。
标准流程的六个节点与核心答案
设计合并请求流程,核心是把“谁在什么条件下做什么、做到什么程度算完成”写清楚。六个节点按顺序推进,其中预检与评审准备可以并行,审批必须在评审意见处理完毕后进行,合入后确认不能省略。节点划分过粗会让责任悬空,过细则增加填写负担,六个节点是多数团队容易执行和检查的粒度。
| 节点 | 输入 | 动作 | 输出 | 完成标志 |
|---|---|---|---|---|
| 创建 | 已完成开发的分支、关联工作项 | 按模板填写标题、描述、变更范围、自测说明,选择目标分支 | 一条信息完整的合并请求 | 必填字段齐全,关联工作项正确 |
| 预检 | 合并请求、自动化检查配置 | 触发构建、静态检查、单元测试、冲突检测 | 检查结果报告 | 全部必需检查通过,无冲突 |
| 评审 | 通过预检的变更、评审人名单 | 评审人按分工阅读变更、提出问题、作者回应修改 | 评审意见与处理记录 | 无未解决的阻塞级意见 |
| 审批 | 评审结论、审批规则 | 审批人核对批准数、检查状态与例外情况后给出审批结论 | 审批记录 | 达到最少批准数且必需检查通过 |
| 合入 | 审批通过的合并请求 | 合入执行人按约定方式合入目标分支 | 目标分支上的合入记录 | 合入成功,关联工作项状态更新 |
| 合入后确认 | 合入后的目标分支 | 验证目标分支构建、必要的部署验证、通知相关人 | 验证结果与状态更新 | 目标分支构建通过,验证结论记录在案 |
节点顺序有两条硬约束:审批在评审之后,合入在审批之后。可并行的部分是预检与评审人分配,预检运行期间可以同步通知评审人准备。可跳过的条件要提前写明,例如仅修改文档或注释的变更可减免部分检查项,但减免规则应由流程维护人统一维护,作者不能自行跳过。
创建与预检:提交前要准备什么
创建节点决定后续环节的信息质量。分支命名与目标分支需要团队统一约定,例如按“类型/工作项编号-简述”命名功能分支,目标分支固定为集成分支或主干,禁止直接向受保护分支推送。约定写进仓库说明或模板提示中,作者创建时按约定选择,减少口头确认。
合并请求模板应包含以下字段,团队可按规模增减:
- 标题:包含工作项编号与变更目的,便于检索和追溯。
- 描述:说明改了什么、为什么改、影响范围,以及自测方式与结果。
- 关联工作项:填写对应需求、缺陷或任务编号,合入后据此更新状态。
- 变更类型:功能、缺陷修复、重构、配置或文档,用于确定检查项和评审人。
- 风险与回退说明:涉及数据、配置或对外接口时,写明回退方式。
- 截图或验证记录:界面类变更附验证结果,便于评审人判断。
预检项建议覆盖四类:构建是否通过、静态检查是否无新增严重问题、单元测试是否通过、与目标分支是否存在冲突。预检失败时由作者负责修复并重新触发,评审人不需要在检查未通过时投入阅读。若失败原因属于环境或流水线本身,由流程维护人排查,作者在合并请求中记录阻塞原因,避免反复重试消耗时间。
评审与审批:评审人怎么定、审批门槛怎么设
评审人按变更内容分配,而不是固定全员参与。常见分工是三类:业务或需求提出方确认变更是否符合预期;模块负责人确认实现质量与对现有代码的影响;架构角色在涉及公共接口、数据模型或跨模块改动时介入。小团队可以一人兼多个角色,但每个角色对应的检查内容要写清楚。
评审意见按严重级别处理,建议分为阻塞、建议、疑问三级。阻塞级意见必须解决或由提出人明确撤回后才能进入审批;建议级意见由作者决定是否采纳,不采纳时说明理由;疑问级意见在回复中澄清即可。级别由评审人标注,作者不能自行降级,避免重要问题在沟通中被稀释。
| 规则项 | 建议配置 | 适用条件 |
|---|---|---|
| 最少批准数 | 常规变更1至2人,涉及公共模块或高风险变更2人以上 | 按变更类型和影响范围区分 |
| 必需检查 | 构建、静态检查、单元测试全部通过 | 文档类变更可减免,需在规则中列明 |
| 阻塞意见清零 | 审批前必须无未解决阻塞级意见 | 所有变更适用 |
| 例外处理 | 紧急修复可由指定审批人单独批准,事后补评审并记录原因 | 仅限线上故障等紧急场景,需限定适用人和时限 |
评审时限需要明确,例如常规变更在提交后一个工作日内给出首轮意见,超过时限由流程维护人提醒或升级给模块负责人。时限的作用是让等待可见,具体时长由团队按节奏确定,不必照搬固定数值。
评审记录与工作项状态的衔接是流程落地的关键动作。在ONES中,合并请求对应的需求或任务可以作为工作项承载,评审结论、审批结果和合入状态回写到同一工作项,评审人从工作项即可看到变更进展,减少在代码平台与任务工具之间反复核对。团队配置时把“评审中”“待合入”“已合入”设为明确状态,状态流转与节点完成标志一一对应。
合入与合入后确认:执行条件与回退准备
合入前逐项确认:审批已达到最少批准数,必需检查全部通过,阻塞级意见已清零,目标分支为约定分支,关联工作项状态正确。任何一项不满足都不进入合入动作,合入执行人有权退回,不需要重新讨论规则。
合入方式按场景选择:合并提交保留完整历史,适合多人协作、需要追溯每次提交的功能分支;压缩合入把多个提交整理为一条,适合提交较碎、希望主干历史清晰的变更;变基合入保持线性历史,适合提交规范、需要逐条保留语义的场景。团队应选定默认方式并写入规范,特殊方式需说明理由。
| 检查项 | 通过标准 | 责任人 |
|---|---|---|
| 审批状态 | 达到最少批准数,例外已记录 | 审批人 |
| 检查状态 | 必需检查全部通过 | 作者、合入执行人 |
| 评审意见 | 无未解决阻塞级意见 | 评审人、作者 |
| 目标分支 | 与约定一致,无冲突 | 合入执行人 |
| 合入后验证 | 目标分支构建通过,必要部署验证完成 | 合入执行人、值班人 |
合入后确认包括三步:观察目标分支构建结果,按需在测试环境做部署验证,更新关联工作项状态并通知相关人。验证失败时按预先写明的回退方式处理,例如回滚合入提交或关闭相关开关,由合入执行人发起、模块负责人确认,并在工作项中记录原因和后续修复安排。
角色与交付物分工
流程节点落到人,才不会停留在文档里。角色可以兼任,但每个节点的交付物要有明确归属。
| 角色 | 主要节点 | 交付物 |
|---|---|---|
| 作者 | 创建、预检、评审回应 | 完整的合并请求描述、自测记录、预检失败修复、评审意见处理说明 |
| 评审人 | 评审 | 分级评审意见、对阻塞意见的确认或撤回 |
| 审批人 | 审批 | 审批结论、例外批准记录 |
| 合入执行人 | 合入、合入后确认 | 合入记录、验证结果、回退处置记录 |
| 流程维护人 | 全流程 | 模板与规则维护、超时提醒、流程检查与调整记录 |
跨角色交接以合并请求中的记录为准:作者提交时@评审人,评审人给出结论时标注级别,审批人批准时引用检查结果,合入执行人完成后回写工作项状态。口头确认可以作为补充,关键结论要落在合并请求或工作项中,便于后续追溯。
示例:一个小团队的合并请求流程落地
以下为演示情景,用于说明流程如何运行,不代表真实团队数据。假设一个六人开发小组,采用主干加短生命周期功能分支的策略,主干受保护,日常变更通过合并请求进入主干,每周一次发布分支。
作者小李接到一个订单列表分页缺陷,从主干拉出分支“fix/ORD-218-分页越界”,完成修改后在代码平台创建合并请求。标题写“ORD-218 修复订单列表分页越界”,描述中说明问题现象、修改点、自测的分页边界用例,关联工作项ORD-218,变更类型选缺陷修复,风险说明写“仅影响列表查询,无数据结构变更”。
预检自动运行,构建和单元测试通过,静态检查提示一处未使用变量。小李删除该变量后重新触发,检查全部通过。系统按规则分配评审人:模块负责人老张审实现,业务方小王确认分页行为符合预期。老张提出一条阻塞意见,指出边界条件缺少测试;小王确认交互无变化。小李补充测试用例并回复,老张撤回阻塞意见。
审批人由老张兼任,核对批准数和检查状态后批准。合入执行人按团队默认的压缩合入方式完成合入,观察主干构建通过,在测试环境验证分页功能,随后把ORD-218状态更新为已合入并通知测试人员。
这次走查暴露两个问题:静态检查的小问题导致预检多跑一轮,团队随后在提交前增加了本地检查步骤;评审人分配依赖手动@,团队把模块与评审人的对应关系写入规则,由系统自动带出。调整后流程执行更顺畅,规则也随之更新到模板说明中。
完成检查:流程上线前逐项核对
流程文档写完后,用下面的清单逐项确认可执行性。每项都要有明确负责人,未通过的项目在上线前补齐。
| 检查项 | 通过标准 | 负责人 |
|---|---|---|
| 分支与权限配置 | 受保护分支已设置,推送与合入权限按角色分配 | 流程维护人 |
| 模板与预检项 | 合并请求模板字段齐全,预检项已配置并成功运行过一次 | 流程维护人 |
| 评审与审批规则 | 评审人分配规则、最少批准数、例外规则可执行且有记录位置 | 模块负责人 |
| 角色明确到人 | 作者、评审人、审批人、合入执行人均有对应人员或轮值安排 | 团队负责人 |
| 异常与回退路径 | 预检失败、验证失败、紧急合入均有处置步骤和责任人 | 合入执行人 |
| 状态衔接 | 工作项状态与流程节点对应,合入后状态更新有人负责 | 流程维护人 |
清单全部通过后,先用一到两周的小范围运行验证规则是否顺手,再逐步扩大适用范围。运行中发现的规则缺口,由流程维护人统一修订模板和检查项,避免每个人按自己的理解执行。
常见问题
团队规模很小,评审人和审批人由同一人兼任,流程还能执行吗?
可以执行,但要把“评审”和“审批”两个动作分开记录。同一个人兼任时,先以评审人身份给出分级意见并确认阻塞意见清零,再以审批人身份核对批准数和检查状态后给出审批结论。两次动作在合并请求中分别留痕,避免出现“自己评自己批、没有记录”的情况。涉及公共接口或数据模型的变更,建议临时引入一位不参与开发的同事做第二评审,降低单人判断的风险。
紧急线上故障需要马上合入,标准流程中的哪些节点可以压缩?
可以压缩的是评审等待和审批人数,不能跳过的是预检和合入后确认。常见做法是由指定的紧急审批人单独批准,合入执行人确认必需检查通过后合入,合入后立即观察目标分支构建和线上表现。事后在一个工作日内补齐评审,并在工作项中记录紧急原因、批准人和补评审结论。例外规则要提前写明适用场景、适用人和时限,避免“紧急”成为绕过流程的通用理由。
预检经常因为环境或流水线问题失败,作者反复重试很耗时,怎么处理?
先把失败原因分成两类:代码问题由作者修复后重新触发;环境或流水线问题由流程维护人排查,作者在合并请求中记录阻塞原因并通知维护人,不反复重试。为减少这类消耗,可以在提交前增加本地检查步骤,把静态检查和单元测试前移到开发机上;同时让流程维护人定期查看预检失败记录,把高频失败项补进模板提示或检查配置。
评审意见提出后作者长期不回应,或者评审人迟迟不给意见,流程怎么推进?
两个方向都要有时限和升级路径。作者侧,超过约定时间未回应评审意见的合并请求,由流程维护人提醒作者,仍无进展则关闭或退回,避免长期挂起占用评审资源。评审人侧,提交后超过约定时限未给出首轮意见的,由流程维护人提醒,必要时升级给模块负责人改派评审人。时限的具体数值由团队按节奏确定,关键是让等待可见、有人负责推动,而不是停留在口头催促。
流程上线后,怎么判断规则是否合适、需要调整?
先小范围运行一到两周,观察三类信号:预检失败是否集中在少数可预防的问题上,评审意见是否大量停留在建议级而阻塞级很少,合入后是否出现需要回退的变更。这些信号指向模板字段、检查项或审批门槛的调整方向。调整由流程维护人统一修订模板和规则说明,并记录修改原因,避免每个人按自己的理解执行。评审等待时长等流动效率指标属于另一类分析主题,可在流程稳定后单独度量。
