511fd30cc6
用户裁定:文档只写现状,历史流水一律删掉,过程查 git log。 - 43 篇「变更记录 / 修订记录」整节删除:继电保护规划 12.6 KB、产品 需求 11.8 KB、项目部署环境 5.5 KB、BSD Socket 指南 5.3 KB、架构 总览 5.0 KB、实机测试实施指南 3.8 KB 等 - 23 篇别处仍有指向:只留节名 + 一行「本文件不再记流水账,过程查 git log」,节号与锚点不位移(doc-links 不因此断链) - 5 篇整表保留(被当唯一证据 / 活台账引用):看门狗设计说明、配置 文件设计说明、RAM预算台账、内容页架构、本地工具路径环境变量方案 - 规范同步:文档规范 §5.1 改新裁定;测试文档模板规范删示例节与 登记句;测试开发标准流程 / UI 两篇 / 实机测试实施指南 / 四篇单测 说明 / 并行任务工作树方案 / 编号规范 的「登记变更记录」改「写进 正文」 - 技能同步:stale-doc-count-sweep / ui-verify / id-family 三个 SKILL 正文不再要求追加流水行(顺带消掉 SKILL.md:121「产品需求 §12」 失效引用) - 修 5 处悬空指针:采样有效性校验目录锚点、BSD 指南「文末变更 记录」、docs/README 过期描述、网络自愈架构两处指向面 72 篇文档净减 600 余行;check_doc_links --all --sections-strict 可判 定比例 61% → 78%、失效引用 0;静态门禁 passed=50 failed=0;gitlint 10 条历史提交信息 0 failed。 未提交他人在飞改动:.dsh/skills/keil-build/*(%SystemDrive% 守卫)。
2.4 KiB
2.4 KiB
end-of-file-fixer — 文件末尾必须恰好一个换行(改写型)
一句话:文件最后一个字节必须是换行、且末尾不能留多余空行;改的是工作区,需要再
git add一次。
- 配置:官方
pre-commit-hooksv5.0.0,exclude: *cubemx-generated(与行尾空白同一段豁免)。
1. 它在查什么
- 末尾无换行 → 补一个;末尾多余空行 → 删到只剩一个换行;空文件(0 字节)不动。
2. 为什么要它
- 无末尾换行的文件在
git diff、cat、grep拼接时会与下一条输出黏在一起; - 避免
\ No newline at end of file这种噪声长期留在历史 diff 里。性质上属预防性。
3. 触发面与豁免
- 与
trailing-whitespace共用生成文件豁免(.ioc、Src/、Inc/、HAL/CMSIS/中间件、 Keil 工程与.map等)——理由相同:那是工具产物。
4. 报错怎么读
Fix End of Files.........................................Failed
Files were modified by this hook.
git add被改文件后重新提交。- ⚠ stash 陷阱(本仓踩过):pre-commit 跑钩子前会 stash 未暂存改动,钩子看到的是"没有你
中间状态"的树;改代码同时更新基线/受管区时,务必先
git add再跑钩子,否则会假报警。
5. 好处
- 全库文件末尾形态统一,脚本类工具(按行读文件的门禁脚本自己也算)行为更可预期。
6. 限制与盲区
- 只管文件末尾:行间的多余空行、缩进风格都不管;
- 不查编码:BOM 有无与丢失由构建期
#870-D暴露,U+FFFD由no-mojibake管,且后者 只覆盖 C/H——文档侧的字节卫生目前靠人工(本目录作者每次交付前逐文件核 BOM/CR/EF BF BD); - 只处理本次涉及的文件,历史文件不会被批量整理(避免一次性巨大 diff)。
- 迁移时发现的一条已更正的旧错误值得记在这里:原手册把
check-added-large-files的阈值写成 1 MB, 实际默认是 500 KB(--maxkb默认 500)→ 见docs/门禁说明/check-added-large-files.md§1。 提醒:本目录任何"默认值"都应以安装的钩子源码或实测为准,不要抄旧文档。
7. 豁免与基线 / 8. 改这个门禁本身
- 无基线。若真有"某类文件必须无末尾换行"的需求,加豁免并写明原因,别用
--no-verify绕过。