Files
STM32F4-Base/docs/门禁说明/check-merge-conflict.md
T
wandering1 511fd30cc6 docs: 清理全仓变更记录流水(43 篇整节删 / 23 篇留一行 / 5 篇保留)
用户裁定:文档只写现状,历史流水一律删掉,过程查 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% 守卫)。
2026-10-28 22:00:34 +08:00

1.9 KiB
Raw Blame History

check-merge-conflict — 别把没解完的冲突标记提上去

一句话:文件里还留着 <<<<<<< / ======= / >>>>>>> 这类行首冲突标记就拦。

  • 配置:官方 pre-commit-hooks v5.0.0,无额外参数。

1. 它在查什么

  • 行首的冲突标记形态(7 个小于号 / 等号 / 大于号 / 竖线组合),以及 .rej、.orig 这类补丁残留文件。

2. 为什么要它

  • 冲突标记留在代码里常常照样编得过(落在注释里、或被条件编译包住),只在运行时或下一个 人才发现——所以这条便宜且值。

3. 触发面 / 看不见什么

  • 只看本次提交涉及的文件;已提交的历史冲突不追。
  • 不看语义冲突(两边各加一个函数、逻辑互相矛盾):那是人与测试的活。

4. 报错怎么读

check for merge conflicts................................................Failed
  App/x/y.c
  • 解完冲突再提交。若你是在文档里演示冲突标记,本门禁没有局部豁免:把示例写成非行首形态 (缩进进代码块、或用占位描述),必要时 --no-verify 并在提交说明里写清为什么。

5. 好处

  • 挡住"顺手 git add . 把半解状态一起提交"的常见事故。

6. 限制与盲区

  1. 判据是行首标记形态:本仓注释里的分隔线(// =====、# =====)因为带前缀字符不会误报, 但真放在行首的 7 连等号(ASCII 表格线、Markdown 里手写标题下划线)会被判成冲突标记;
  2. 只认标准标记:某些合并工具/编辑器的自定义残留形态不一定被认;
  3. 语义冲突、跨文件不一致(改签名没改调用点)完全不在能力范围(后者由编译器与单测负责)。

7. 豁免与基线 / 8. 改这个门禁本身

  • 无基线。要演示冲突标记,改写法(不放行首)比改门禁或放宽更合适。