pre-commit 代码检查改为委托 _backend-lint / _versionctl-lint / _frontend-check,新增 LFS 指针校验;commit-msg 新增多行空行格式校验和模板注释忽略,移除 CJK/Python 字符集检测;新增 prepare-commit-msg 提交信息模板;hooks-install 增加 source 文件存在性校验;前端 check 补入 tsc -b 类型检查并修复暴露的类型错误
58 lines
2.5 KiB
Markdown
58 lines
2.5 KiB
Markdown
# prepare-commit-msg-hook
|
||
|
||
## Purpose
|
||
|
||
定义 prepare-commit-msg Git hook,在 `git commit` 编辑器打开时为开发者提供提交信息模板。
|
||
|
||
## Requirements
|
||
|
||
### Requirement: prepare-commit-msg hook 提供提交信息模板
|
||
|
||
prepare-commit-msg hook SHALL 在 `git commit` 打开编辑器时,将规范格式的提交信息模板预填充到提交信息文件中,辅助开发者编写符合项目规范的多行提交信息。
|
||
|
||
#### Scenario: 模板预填充到提交信息文件
|
||
|
||
- **WHEN** `git commit` 被执行且编辑器打开提交信息文件
|
||
- **THEN** prepare-commit-msg hook SHALL 在提交信息文件中写入模板内容
|
||
- **THEN** 模板 SHALL 包含注释行(以 `#` 开头)引导开发者填写规范格式
|
||
|
||
#### Scenario: 模板包含格式引导
|
||
|
||
- **WHEN** 模板被写入提交信息文件
|
||
- **THEN** 模板 SHALL 包含首行格式提示:`# <类型>: <简短中文描述>`
|
||
- **THEN** 模板 SHALL 包含空行占位符
|
||
- **THEN** 模板 SHALL 包含详细描述区:`# <详细说明>`
|
||
- **THEN** 模板 SHALL 列出可用类型:`feat / fix / refactor / docs / style / test / chore`
|
||
- **THEN** 模板 SHALL 包含示例:`feat: 添加供应商批量管理功能`
|
||
|
||
#### Scenario: 注释行不被提交
|
||
|
||
- **WHEN** 用户在编辑器中基于模板填写提交信息并保存
|
||
- **THEN** 以 `#` 开头的模板注释行 SHALL 被 Git 作为注释过滤,不会成为提交信息的一部分
|
||
|
||
#### Scenario: 已有提交信息时跳过
|
||
|
||
- **WHEN** 提交信息文件已包含非注释内容(如 `-m` 参数指定、`git commit --amend`、merge commit、cherry-pick)
|
||
- **THEN** prepare-commit-msg hook SHALL NOT 覆盖已有内容,直接退出
|
||
|
||
#### Scenario: Git 默认注释不阻止模板写入
|
||
|
||
- **WHEN** 提交信息文件只包含空行或 Git 默认生成的 `#` 注释行
|
||
- **THEN** prepare-commit-msg hook SHALL 将其视为没有已有提交信息
|
||
- **THEN** hook SHALL 在文件顶部写入模板,并保留 Git 原有注释内容
|
||
|
||
### Requirement: 通过 hooks-install 安装
|
||
|
||
prepare-commit-msg hook SHALL 随 `make hooks-install` 一起安装到 `.git/hooks/`。
|
||
|
||
#### Scenario: 安装 prepare-commit-msg
|
||
|
||
- **WHEN** 执行 `make hooks-install`
|
||
- **THEN** `scripts/git-hooks/prepare-commit-msg` SHALL 被复制到 `.git/hooks/prepare-commit-msg`
|
||
- **THEN** 该文件 SHALL 被设置为可执行(`chmod +x`)
|
||
|
||
#### Scenario: hooks-check 验证安装状态
|
||
|
||
- **WHEN** 执行 `make hooks-check`
|
||
- **THEN** 命令 SHALL 检查 `.git/hooks/prepare-commit-msg` 是否存在且可执行
|