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.3 KiB
2.3 KiB
check-added-large-files — 别把大文件提进仓库
一句话:新增文件超过阈值(官方默认 500 KB)即拦。它防的是"手滑提交",不是体积门禁。
- 配置:官方
pre-commit-hooksv5.0.0,未加参数 → 用官方默认阈值与默认行为。
1. 它在查什么
-
新增(不是修改)文件的体积;超阈值即 FAIL。已入库大文件被修改不报——它只挡"新拉进来一个东西"。
-
阈值的正确口径(本次核对更正):官方钩子的参数是
--maxkb,默认 500(即 500 KB)。 原手册这里写的是"单个文件 > 1MB",是错的(已按本机安装的钩子源码更正)。
2. 为什么要它
- 本仓天然产出巨大的文件:
MDK-ARM/**/*.map、.htm、.hex、build_log.txt、串口与自检日志、 截图。这些要么在.gitignore,要么在生成文件豁免清单里;一旦有人手工git add -f一份.map或一轮台架日志,仓库就永久背上这个体积(删掉文件也不会变小,历史在对象库里)。
3. 触发面 / 看不见什么
- 只看新增文件;不追历史里已有的大文件。
- 不看目录总大小、不看提交次数、不看"未压缩但可压"的浪费。
4. 报错怎么读
check for added large files..............................................Failed
docs/xxx.map (12.3 MB) is too large
- 正确动作:别提交它(收进
.gitignore或改放产物目录),而不是调高阈值。 - 确实必须入库的二进制(子集字体生成物、golden 参考图)走体积可控的生成链,见
font-regen与ui-verify的做法。
5. 好处
- 挡住"最不可逆、最难补救"的那类错误(仓库膨胀只能重写历史来治)。
6. 限制与盲区
- 阈值是单个新文件的,不看总量、不看累积;
- 已入库的大文件永远绿(改它也不报);
- 很多小文件堆成巨型目录(例如
simulator/build/)完全无感——那类靠.gitignore挡; - 顶层
exclude与.gitignore的分工比这条门禁更根本(口径见docs/代码规范/pre-commit使用说明.md)。
7. 豁免与基线 / 8. 改这个门禁本身
- 无基线、无逐文件豁免开关;放宽只能给
args加--maxsize,而那会同时放宽所有新文件。