pre-commit 代码检查改为委托 _backend-lint / _versionctl-lint / _frontend-check,新增 LFS 指针校验;commit-msg 新增多行空行格式校验和模板注释忽略,移除 CJK/Python 字符集检测;新增 prepare-commit-msg 提交信息模板;hooks-install 增加 source 文件存在性校验;前端 check 补入 tsc -b 类型检查并修复暴露的类型错误
2.5 KiB
2.5 KiB
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-msgSHALL 被复制到.git/hooks/prepare-commit-msg - THEN 该文件 SHALL 被设置为可执行(
chmod +x)
Scenario: hooks-check 验证安装状态
- WHEN 执行
make hooks-check - THEN 命令 SHALL 检查
.git/hooks/prepare-commit-msg是否存在且可执行