From 63ee090fd1851cf8e3840e6c5bc2bc601b8f651f Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Sat, 10 Oct 2026 01:15:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=8C=E5=B0=BE=E7=AD=96=E7=95=A5=E5=86=99?= =?UTF-8?q?=E6=AD=BB=E8=BF=9B=20.gitattributes=EF=BC=88=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=20LF=E3=80=81bat=20=E5=BC=BA=E5=88=B6=20CRLF=E3=80=81=E4=BA=8C?= =?UTF-8?q?=E8=BF=9B=E5=88=B6=E6=98=BE=E5=BC=8F=E6=A0=87=E6=B3=A8=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E6=A0=B9=E6=B2=BB=E9=87=8D=E7=94=9F=E6=88=90=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E8=A1=8C=E5=B0=BE=E5=B9=BB=E5=BD=B1=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 27 +++++++++++++++++++++++++++ AGENTS.md | 1 + 2 files changed, 28 insertions(+) diff --git a/.gitattributes b/.gitattributes index 4fae6dc1..8cb0359f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,28 @@ +# ===== 行尾策略(2026-10-09 定,勿删本段)===== +# 仓库 blob 与检出工作区统一 LF。原因:CubeMX 重生成写的是 **LF**,而此前工作区的行尾 +# 由每台机器各自的 `core.autocrlf` 决定(本机 = true → 检出成 CRLF),于是每次重生成后 +# 40+ 个第三方文件在 `git status` 里显示"已修改"(内容归一化后其实完全一致)。 +# 写死属性后,行为不再依赖各机的 `core.autocrlf`,换机器 / 重新 clone 也不会复发。 +* text=auto eol=lf + +# 批处理脚本必须 CRLF:cmd.exe 对 LF-only 文件里的 goto/标签处理不可靠 +*.bat text eol=crlf +*.cmd text eol=crlf + +# 二进制显式标注(`text=auto` 靠内容嗅探,PNG 未走 LFS,尤其要写死) +*.png binary +*.gif binary +*.ttf binary +*.otf binary +*.ico binary +*.dll binary +*.lib binary +*.a binary +*.o binary +*.exe binary +*.bin binary +*.zip binary +*.pdf binary + +# LFS 图片:必须排在 `*` 之后才能覆盖它(-text 使其不参与行尾转换) *.jpg filter=lfs diff=lfs merge=lfs -text diff --git a/AGENTS.md b/AGENTS.md index 00471199..c519ac33 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,6 +11,7 @@ STM32F407ZGTx @168MHz(HSE 8MHz → PLL M=4/N=168/P=2);**仅 Keil MDK-ARM v - 确需脚本级重写:工程源码为 UTF-8(多数文件无 BOM,UI 系带 BOM),按原样同编码回写、保持 BOM 状态;拿不准就别碰 - 发现乱码:先统计 `EF BF BD` 字节数确认真损坏(勿信终端/Read 渲染);**不要急著 `git checkout`**(会丢弃全部未提交工作)——先用 Edit 只修坏行 - **Edit 工具会剥掉文件原有的 UTF-8 BOM**(2026-09-18 实测):带 BOM 文件(如 `App/cfg/cfg_file.c`)被 Edit 后 BOM 静默消失 → ARMCC 改按 CP936 解码 → 中文字符串字面量报 `#870-D: invalid multibyte character sequence`(**只有重编译该文件才暴露,历史"0 警告"不代表安全**)。改完带中文字面量的文件须核对 BOM 并按原样补回(只在文件头前缀 3 字节 `EF BB BF`,勿整文件重写) +- **行尾策略已写死进 `.gitattributes`(2026-10-09)**:`* text=auto eol=lf`(仓库 blob 与工作区统一 LF)+ `*.bat`/`*.cmd` 强制 CRLF(cmd.exe 对 LF-only 的 goto/标签不可靠)+ PNG/TTF/DLL/LIB 等显式 `binary` + `*.jpg` 走 LFS 且 `-text`(该条必须排在 `*` 之后才能覆盖)。**不要再依赖 `core.autocrlf`,也不要把工作区文件"改回 CRLF"**——CubeMX 重生成写的就是 LF;此前每次重生成后 40+ 个第三方文件在 `git status` 里显示"已修改"(内容归一化后一致),根因就是行尾由每台机器各自的 autocrlf 决定。第三方/生成文件的"文件末尾空行"已一次性对齐工具输出(`53bd9af`),**勿再用改写型钩子去修剪**(已在 `trailing-whitespace`/`end-of-file-fixer` 豁免) ## 构建与验证