附录 A 练手考核对照
本附录说明各章"练手"如何判定是否达标,供学生自查、供维护者了解覆盖范围。判定由练手仓库的 scripts/check-quest.py 完成,运行 python scripts/check-quest.py <章号> 检查单章,python scripts/check-quest.py all 跑总检。
A.1 判定图例
- [自动]:脚本直接读取 git 状态或文件内容判定,跑出通过 / 未通过。
- [自确认]:须在自己的 Gitea Fork 网页上真实操作(PR / Issue / Review / Merge),做完后对照下方清单目视确认即可(纯中文界面,无需脚本、无需管理员审批)。仅第 6/7/8 章属此类。
- [概念]:通过动手演练自然达成,脚本不单独判分(如四区域、分支指针的理解)。
A.2 各章考核方式
| 章 | 练手内容 | 判定方式 | 脚本实际判定点 |
|---|---|---|---|
| 0 开始前准备 | 装 Git、配身份、`pull.rebase`、`core.autocrlf`、找仓库地址 | [自动] + [自确认] | git 已装、`user.name` 非占位、email 合法且不含 test、`pull.rebase=true`、`core.autocrlf=false`;找地址需本人确认 |
| 1 Git 是什么 | 四区域、`add` vs `commit`、分支指针、五分钟实践 | [自动] + [概念] | `.quest-scratch/git-demo` 含 ≥2 个提交且曾创建 `test-branch` 分支 |
| 2 第一次完整工作流 | clone→pull→建分支→改→自测→commit→push→PR→review→merge→清理 | [自动] + [自确认] | 新增成员卡片(非模板 / 非示例)且字段校验通过、曾建 `feature/add-*` 分支;卡片是否合入 `main` 由 `ls-tree main` 检测,未合入提示走完 PR + merge |
| 3 分支策略 | 五种分支类型、命名规范、rebase 同步主线 | [自动] + [概念] | 从分支 / reflog 检测到 `feature/ fix/ docs/ experiment/` 之一;命名含大写 / 下划线 / 空格给提醒 |
| 4 Commit 规范 | 格式、type 表、subject 禁用词、body 四段 | [自动] | 最近 30 条提交中 ≥2 条符合 conventional 格式;subject 命中禁用词给提醒 |
| 5 测试与可复现 | 提交前自测、PR 附可复现信息、保密合规 | [自动] | 对全部成员卡片跑 `check-members.py` 全过 |
| 6 PR 规范 | 八节模板、标题格式、WIP、拆分 PR、审核结果 | [自确认] | 网页操作,对照八节模板与标题格式目视确认(无需脚本) |
| 7 Issue 规范 | 四类 Issue、模板字段、`[类型] 标题`、一事一 Issue | [自确认] | 网页操作,对照类型/模板/一事一 Issue 目视确认(无需脚本) |
| 8 配合 Code Review | 六维自检、在原分支按意见补 commit、参与讨论 | [自确认] | 网页操作,对照六维清单目视确认(无需脚本) |
| 9 出错急救 | 冲突、rejected、amend、reset、restore、stash、revert | [自动] + [概念] | `.quest-scratch/rescue` 含一个 `revert` 反向提交且无遗留冲突标记;其余急救为对照速练,不单独判分 |