VPNT Technical Report Series
Vol. 2026, No. 1 · 管理员层手册
← 目录 / 管理员层手册

第 2 章 质量控制

合入 main 的每一行代码须经至少一名维护者审查并签字。

2.1 审核人资格

角色 可否审核 条件
维护者(Maintainer) 熟悉被审模块
管理员(Administrator) 仅限紧急情况 须具备模块知识
开发者(Developer) 无签字权
报告人(Reporter) 无签字权

开发者可参与讨论、互审提意见,但最终签字权仅归维护者。

2.2 六维审查(逐项检查,缺一即不完整)

  1. 功能正确性:实现符合预期;边界与错误处理完备。
  2. 算法正确性:逻辑正确;数值精度可靠;无死循环、无无限递归。
  3. 命名规范:命名符合约定;注释与行为一致。
  4. 可复现性:参数有说明;随机种子已固定或已说明;使用相对路径;包含或引用实验记录。
  5. 文档完整性:具备关键注释;README、文档、CHANGELOG 已同步更新。
  6. 代码保密合规:无密钥、无内部 IP;未误提交数据;无外部地址。

2.3 合入策略

按 PR 性质选择合并方式,兼顾 main 线性与关键历史的保留:

PR 性质 合并方式 理由
日常 `feature/*`、`fix/*`、`docs/*` **Squash merge** 把分支上的零散提交压成一条干净记录,`main` 保持线性易读
论文 / 里程碑相关、含多个有意义原子提交的 PR **Merge commit** 保留每个原子提交与其 commit body 四段,服务论文可复现与 Tag 绑定

Gitea 可在「仓库 -> Settings -> Pull Requests」限制可用的合并方式,也可在每次点击 Merge 时下拉选择。

2.4 审核结果

结果 操作
通过(Approve) 合并
需修改(Request Changes) 逐行标注,开发者修复后重新提交,未修复不予合并
关闭(Close) 附说明,PR 不再推进

评论应具体、可操作,避免"看起来没问题"式结论。

2.5 分支清理

2.6 常见错误

错误 正确做法
"看起来没问题"即通过 六维逐项审查,给出具体意见
开发者在 main 上修改 回到原分支补充 commit 后重新推送
合并后不删除分支 立即删除,避免分支堆积
审核人直接修改 PR 代码 标注修改项,由开发者修复后重新提交

2.7 在 Gitea 上接受并合并 PR(操作实务)

本小节操作前提是:main 已按 §1.2 设置合并白名单(Merge Whitelist)与必需批准(Required approvals),故只有维护者(白名单内用户/团队)能在 Gitea 网页端看到并点击 Merge 按钮。以下内容把 §2.2 的六维审查、§2.3 的合入策略、§2.4 的审核结果、§2.5 的分支清理,落地为"在 Gitea 网页端怎么把 PR 真的接受并合进去"的具体点击步骤;凡涉及原则,用"见 §2.x"呼应,不展开。

2.7.1 打开 PR 列表并进入目标 PR

进入原仓库后,通过 Pull Requests 标签页查看全部 PR;维护者也会在通知中收到新的 PR 提醒。

仓库 -> Pull Requests(标签页)

PR 列表入口

提示:如发现某个 PR 不打算合并,可在 PR 页面使用 Close Pull Request 按钮直接关闭(不合并即关闭)。作者若以 WIP:[WIP] 前缀标记,可防止被误合,待就绪后再去掉前缀。

2.7.2 熟悉 PR 页面的四个标签

进入任一 PR 后,页面顶部有四个标签:

PR 页面四标签

2.7.3 在 Files changed 中做逐行审查(六维审查的落地)

六维审查的具体标准见 §2.2。这里只讲"怎么在网页端把意见落到行上"。

PR 页面 -> Files changed(标签)-> 点某行左侧 '+' 号添加行内评论

行内评论与 Start review

2.7.4 提交 Review 动作(Approve / Request changes / Comment)

审查动作位于 PR 页面右上角绿色按钮(有出处称 "Review changes",亦称 "Review";你方 Gitea 1.27 实例的确切字样,请以本小节截图复核)。点击后弹出对话框写总评,再选择其一:

未提交的整轮审查为 Pending,须点 Review 提交后才对所有人生效。三种结果的含义与后续处理见 §2.4。

右上绿色 Review 按钮与三种动作

提交 Review 对话框(一)

提交 Review 对话框(二)

提示:审核动作的确切按钮字样与弹框布局,请以本小节已嵌入的截图,对照你方 Gitea 1.27 实例界面复核后定稿。

2.7.5 在 Conversation 底部合并 PR

审查完成(已获必需批准,见 §2.3、§2.4)后,回到 Conversation 标签底部执行合并。

PR 页面 -> Conversation(标签)-> 底部绿色 Merge Pull Request 按钮 -> 弹出合并框

合并框中的合并方式下拉项(Gitea 支持三种,1.27 网页端确切字样/顺序请以本小节截图复核,概念已确认):

合并框中的 Delete branch 勾选项用于合并后删除源分支,呼应 §2.5。(确切措辞与是否默认勾选,请以截图复核。)

合并框:合并方式下拉与 Delete branch 勾选

提示:合入策略的选择理由与 Squash 的 body 汇总要求见 §2.3,分支清理的后续处理见 §2.5。合并方式下拉的默认选项与勾选状态,请以截图复核后定稿。

2.7.6 为什么只有维护者能合并(分支保护关系)

§1.2 的分支保护规则解释了"为什么必须先批准、为什么只有维护者能点 Merge":

注:本小节的分支保护设置截图尚未提供,待补 media/管理员/ 对应图片后插入。

2.7.7 常见误操作(补充 §2.6)

以下操作风险基于 Gitea 行为与 §2.6 推导,请合并前留意:

  1. 误选 Rebase and merge:会改写历史、丢失提交者签名。日常优先 Squash(见 §2.3)。
  2. 合并框未勾 Delete branch:遗留垃圾分支,需按 §2.5 兜底清理。
  3. experiment/* 误点合并:分支保护按模式匹配;若 experiment/* 不在保护规则内,则不受白名单/批准约束,合并前必须人工核对目标分支名。
  4. 在 PR 里直接改代码:Gitea 网页端 PR 一般不提供"在 PR 中编辑源文件"入口,reviewer 应在 Files changed 评论(见 §2.7.3),由作者本地改后推送。
  5. 未等批准/Checks 即合并:受 §1.2 约束时按钮本应禁用;若管理员用 Force merge 绕过,须注意 1.27 可在规则中勾选"管理员也须遵守分支保护规则"禁用该按钮(见 §2.7.6)。

合并前检查清单

步骤 操作要点 呼应章节
1 打开 PR(Pull Requests 标签,进入目标 PR) §2.7.1
2 对照六维审查在 Files changed 落评论 §2.2、§2.7.3
3 提交 Approve(或 Request changes) §2.4、§2.7.4
4 选 Squash and merge,并勾 Delete branch §2.3、§2.5、§2.7.5
5 点 Merge Pull Request 完成合并 §2.7.5
6 确认 main 已更新、源分支已删除 §2.5

提示:上述网页端按钮的确切字样、下拉顺序与默认勾选状态,凡标注"以截图复核"者,请对照本小节已嵌入的 media/管理员/ 截图,以你方 Gitea 1.27 实例界面最终确认。


← 第 1 章 资产创建第 3 章 管控风险 →