为了使代码有良好的可追溯性,根据项目现有提交记录补充如下规范。
- 推荐结构:
<范围>[, <类型>]: <简洁描述>。 - 范围(Scope):模块或子项目名称(如
LATX、lat、KZT、linux-user),与路径或子系统保持一致。 - 类型(Type):常用
feat(新特性)、fix(修复)、opt(优化);特殊场景使用temporary fix(临时修复)、Build(deps)(依赖或 CI 维护)。 - 描述(Subject):一句话概括改动,祈使/陈述语气的简短英文描述,避免句号结尾。
| Type | 含义 / 适用场景 | 示例标题片段 |
|---|---|---|
LATX, infra |
对基础设施、构建系统、CI/CD等不影响产品功能的修改 | LATX, infra: Add tracing for ... |
LATX, feat |
对产品面向业务的功能增加 | LATX, feat: introduce smc ... |
LATX, fix |
bug 修复 | LATX, fix: Handle null ... |
LATX, opt |
性能或实现优化 | LATX, opt: Refine glue ... |
LATX, refactor |
函数 / 功能重构 | LATX, refactor: Split ... |
LATX, style |
不影响功能的格式、注释调整 | LATX, style: Reflow comments |
LATX-X64, * |
改动仅针对 64 位,* 同上各类(如 fix) |
LATX-X64, fix: ... |
linux-user |
linux-user 相关(如 syscall 改动) | linux-user, fix: ... |
LATX, docs |
文档 | LATX, docs: Update convention |
| 其他历史类型 | 特殊场景下也可用 temporary fix、Build(deps) 等 |
Build(deps): Bump ... |
范围与类型之间用逗号分隔,类型与描述之间用冒号;无类型时直接用冒号,例如
cpus: Make {start,end}_exclusive() recursive。
** 只要本次修改让翻译器新增了可感知的能力或行为”,就是 feat。 **
典型场景:
- 新增 API、指令翻译、指令支持
- 新增命令行参数、功能开关
- 新增业务逻辑或用户可看到的行为
** 判断标准:**
“如果写进 release note,用户会在意吗?” ** 会 → feat **
** 工程环境、构建系统、CI/CD、工具链、开发脚本等方面的改动,不改变产品行为。**
典型场景:
- 修改 Makefile / CMake / Meson / Bazel
- 开发者自用的追踪或分析工具等
** 判断标准:**
“用户是否能感知行为变化?” ** 不能 → infra **
LATX, feat: Support CONFIG_LATX_GLUE_MASK in indirect jmp glueLATX, opt: Reduce thread contention in fast pathBuild(deps): Update meson to 1.3.0
- 建议保留正文:除
style、docs类型,或极其简单且首行即可描述清楚的提交外,不提倡无正文的提交。 - fix 类型需指明修复对象:正文中写明修复了哪个应用程序/测试集或 git issue 等,便于追溯。
- 正文内容建议:
- 补充背景、动机、方案与验证方式,不必在标题展开细节。
- 单个提交聚焦单一主题,避免一次提交多个无关改动。
- 对临时修复或风险点,正文说明影响范围、替代方案与清理计划,方便后续跟进。
- 标题不宜过长,描述末尾不加句号。
- 是否包含范围且范围名称与子系统一致?
- 类型是否符合场景,是否需要
temporary fix或Build(deps)等特殊标识? - 描述是否清晰指向改动 / 原因,避免只有模糊词(如 “update code”、“fix bug”)。
- 是否按上述要求填写 commit body(尤其对
fix类型)? - 若为临时方案或有后续计划,正文是否注明 TODO / 后续跟进?