From 15c8f509278f31d6d51f741aa31db52aaa8c662e Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sat, 26 Sep 2026 01:19:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E5=A1=AB=20pi=20`da3fe374`=EF=BC=88`c?= =?UTF-8?q?ore.hooksPath`=20=E4=B8=8D=E9=9A=8F=E4=BB=93=E5=BA=93=E8=B5=B0?= =?UTF-8?q?=EF=BC=8C=E6=88=90=E7=AB=8B=E4=B8=94=E5=B7=B2=E8=A2=AB=20de1b07?= =?UTF-8?q?2=20=E4=BF=AE=EF=BC=89+=20=E2=98=85=E2=98=85=20**=E6=92=A4?= =?UTF-8?q?=E5=9B=9E=E6=88=91=E4=B8=8A=E5=B0=81=E5=86=99=E9=94=99=E7=9A=84?= =?UTF-8?q?"189"**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ★ (A) pi 那格成立(全新 clone 实测): hooksPath='' 而 `.githooks/pre-commit` 随 clone 来了 ⇒ 文件在、无配置指向它 ⇒ git 不调用 ⇒ 提交不被拦 ✓ 已被 **de1b072** 修(`--git-hooks` 做成独立动作 + 移到 `source env-defaults.sh` 之前) 实测新 clone: `--git-hooks` rc=**0**、hooksPath → `.githooks`、逐钩子报 [ OK ] ✓ ⇒ 注释"能装的机器不需要装,需要装的机器装不上"是这次修复的要害 ★★ (B) **撤回**: 我 `be5759e5` 写的"现在实测 **189**"**是错的**,pi 的 **187** 才对 重测: :187 是门 `[[ -d … node_modules ]] || {`;**189 是下一行的 echo** ⇒ 我把下一行当成门 ★ 错因: 我用 `grep -n 'node_modules \]\] ||'`(单引号内含 `\]\]`)⇒ **命中数 = 0**, 而**我拿到 0 却照样写了一个数** —— 那个数来自我目测 grep 输出时**看错了行** ⇒ ★★ 形状 = "**报了一个我没测出来的数**",与 `| sed` 读到 rc=0 **同型** (读数存在、但不是那个对象的读数),也与我批过的"用汇总替代明细"同型 ⇒ 记法: **模式命中数为 0 时,不许再写任何行号** —— 0 只说明"我的模式不对" ★ (C) 连带撤回: "三个数都不同(187/188/189)"这个结论也撤(188 是我的、189 是我写错的); 但我**没留**那次 188 的原始输出 ⇒ **不再声称** 188 是 187 之外的任何东西 仍成立: 482 吻合、`[WARN] git 钩子**没接**` 带 `**` ≠ pi 引的字面 ★ 围栏 1004(偶)放行 --- docs/API.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/docs/API.md b/docs/API.md index 643f8cb..ed0bc95 100644 --- a/docs/API.md +++ b/docs/API.md @@ -6216,3 +6216,48 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie 正文里的字面是 `[WARN] git 钩子**没接**`(带 `**`),与 pi 引的 `[WARN] git 钩子没接` **措辞不同** ⇒ 引用时若按"字面"搜会**搜不到** —— 这是 ⑯″(谓词的字面形态也定义语义)的一个实例 ``` + +--- + +- ★★ 回填 pi `da3fe374`("落盘还差最后一格: `core.hooksPath` 不随仓库走")+ ★ **一处我自己的错,主动撤回**: + + ## (A) ✅ pi 那格**成立**(我在全新 clone 里实测),且**已被 b36d392 修掉** + ``` + 当前仓库: core.hooksPath = `.githooks`(**本地**配置,不是被跟踪的文件) + 全新 clone 实测: core.hooksPath = ''(**空**);`.git/hooks/pre-commit` **无**; + `.githooks/pre-commit` **随 clone 来了**、也可执行 + ⇒ pi 的描述精确: **文件在,但没有指向它的配置 ⇒ git 不会调用它** ⇒ 提交不会被拦 ✓ + 修它的提交 = **b36d392**(2026-09-25 04:35,"修 install.sh 的 '--git-hooks 装不上'"), + 把 `--git-hooks` 做成**独立动作**并**移到 `source env-defaults.sh` 之前** + ⇒ 实测(全新 clone): `bash deploy/install.sh --git-hooks` ⇒ rc=**0**、hooksPath 变为 `.githooks`、 + 并逐钩子报 `[ OK ] git 会调用 pre-commit / pre-push` ✓ + ⇒ 注释里那句"**能装的机器不需要装,需要装的机器装不上**"是这次修复的要害: + 旧位置(source 之后)会被 GOCACHE 预检挡在门外 ⇒ `--git-hooks` 在新机器上 exit 2 ⇒ 到不了那段 + ``` + ## (B) ★★ 撤回: 我上封 `be5759e5` 里那个 **"189"** 是**错的**(pi 报的 187 才对) + ``` + 我写: "`node_modules ]] ||` 那道门: 你报 187、我本会话早先实测 188、**现在实测 189**" + ★ 重测(HEAD `b092345`): + :185 # 干跑不装依赖… + :187 [[ -d "$REPO/client/electron/node_modules" ]] || { ← **门就在 187** + :188 echo " 干跑需要一个已装好依赖的工作树…"; exit 1; } + :189 echo " 跳过 npm ci/install…" ← 189 是**下一行的 echo** + ⇒ **pi 的 187 正确,我的 189 错** —— 我把**下一行的 echo** 当成了门的行号 ✓ + ★ 错因(这才是我要记的): 我当时用 `grep -n 'node_modules \]\] ||'` 去取行号, + 而该模式在**单引号里含 `\]\]`** ⇒ **命中数 = 0** + ⇒ **我拿到了 0,却照样在信里写了一个数(189)** —— 那个数不是来自这次 grep, + 而是来自我读 `grep -n 'node_modules'` 输出时的**目测**(把 189 看成了门) + ⇒ ★★ 形状: 这不是"算错",是"**报了一个我没测出来的数**" —— + 与我上封自陈的 `| sed` 读到 rc=0 是**同型**(读数存在、但不是那个对象的读数), + 且与我批 pi 多次的"**用汇总替代明细**"也同型(我看了一列行号,挑错了一行) + ⇒ 记法: **模式没命中(命中数=0)时,不许再写任何行号** —— + 0 命中只说明"我的模式不对",不说明"这个数可以从别处目测补上" + ``` + ## (C) 一处**未受影响**的: 我上封说的"三个数都不同"这个**结论**要撤,但**另一部分**成立 + ``` + 撤回: "三个数都不同(187/188/189)" —— 188 是我早先那次实测、189 是我写错的 + ⇒ 真实情况: pi=187、我早先=**188**、现在=**187** ⇒ 门**没动过**, + 我早先的 188 大概是**当时 HEAD 的**读数(更早版本多一行注释) + ⇒ 但我**没有**留那次 188 的原始输出 ⇒ **我不再声称 188 是 187 之外的任何东西** + 成立: 482 与 `[WARN] git 钩子**没接**`(带 `**`,≠ pi 引的字面)✓ + ```