JianFeeeee
54d641e1c5
修我 de1b072 引入的活回归(pi 017c0239 报回:--git-hooks 假红"找不到 git"):块内补回 env-defaults ④ 的 PATH 归一化
★ pi 报的回归**实测成立**(我对**自己的**提交做严格 A/B,真 git worktree、工具齐全但 PATH 无 git):
de1b072^(旧位置): rc=0 hooksPath=.githooks ← source 的 ④ 已把 /usr/bin 补回
de1b072 (新位置): rc=2 hooksPath=(未设) ← ④ 还没跑 ⇒ 假红"找不到 git" **且真的没装上**
触发带逐条复现(pi 报的三条全部命中):
PATH=/usr/local/sbin 旧 rc=0 装上 / 新 rc=2 未装
PATH=/opt/tools 旧 rc=0 装上 / 新 rc=2 未装
PATH=/sbin:/usr/sbin 旧 rc=0 装上 / 新 rc=2 未装
PATH=/usr/bin 旧 rc=0 / 新 rc=0(对照带,不触发)
★ 根因: 块前移到 source 之前 ⇒ 同时丢了**两条**保证,我只补了一条:
① AGENTMAIL_REQUIRE 的 git 预检(缺 git ⇒ exit 2)—— 我上轮补了
② ★ env-defaults ④ 的 **PATH 归一化** —— **漏了**(env-defaults.sh:124-130)
⇒ ★ 两条的失败方向相反: ① 缺了是**漏**(少一条检查)、② 缺了是**误**(凭空假红)
⇒ 这正是"搬动代码要重算它原来免费得到的保证"的第二次触发,而**我算漏了第二条**
★ 修法: 块内按 env-defaults ④ **逐字相同**的规则补回 PATH(幂等),位置在 command -v git 之前
实测: 三条触发带全部 rc=0 且 hooksPath=.githooks ✓;连跑两次幂等 ✓
负控制: command -v git 真失败时仍 exit 2 + 人话 ✓(原行为保留)
未改 help/DEFER 语义(未插到文件顶部,故 --help 的 sed 2,20 行号不受影响)
★ 另报一处**既存**(非我引入,两版都如此,故不在本修范围):
PATH **完全为空** ⇒ line 11 的 `dirname` 先崩(旧 rc=1 / 新 rc=128)⇒ 到不了本块
⇒ 已记为待判项,未在本次动(改它要动 REPO 计算那行,属另一件事)
★ 验证: bash -n OK;mode=755;diff 仅 +11 行(全在本块内)
2026-09-25 05:38:49 +08:00
..
2026-09-15 14:12:48 +08:00
2026-09-14 08:38:33 +08:00
2026-09-13 11:06:01 +08:00
2026-09-15 07:00:35 +08:00
2026-09-21 05:19:49 +08:00
2026-09-24 04:15:30 +08:00
2026-09-18 04:07:26 +08:00
2026-09-12 11:36:25 +08:00
2026-09-14 23:33:11 +08:00
2026-09-14 20:35:01 +08:00
2026-09-25 05:38:49 +08:00
2026-09-21 07:14:41 +08:00
2026-09-14 15:51:40 +08:00
2026-09-15 11:21:00 +08:00
2026-09-14 23:33:11 +08:00
2026-09-14 21:26:51 +08:00
2026-09-06 15:18:06 +08:00
2026-09-02 20:05:51 +08:00
2026-09-13 11:06:01 +08:00
2026-09-13 11:06:01 +08:00
2026-09-14 08:38:33 +08:00