lat/COMMIT_CONVENTION.md

76 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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