Skip to content

v0.28.0 — Git Bash 探测链 + fail-loud 引导(issue #11)

Choose a tag to compare

@KannaKuron KannaKuron released this 25 Sep 18:03
· 85 commits to main since this release

修复 issue #11 —— Git 没装在默认位置时,整个会话的命令能力归零

根因:gitbash-executor 的 bashPath 默认写死 C:/Program Files/Git/bin/bash.exe。Git 装在其它盘(例如 Q:\Git)时每条命令都 spawn … ENOENT;而本插件会撤掉 pwsh-sandbox,框架每个进程只允许一个 ctx.shell——于是命令能力直接归零,且没有任何提示。

本次改动

  1. bashPath 解析链(src/bash-path.js,执行器与路径翻译层共用同一结果):设置里填的 → 默认安装位置(Program Files / Program Files (x86) / ProgramW6432 / LOCALAPPDATA)→ PATH 逐目录 → PATH 上的 git.exe 反推 → 注册表用户/系统 Path → 全部落空则失败。cordis.patch.yml 里的默认值改为空串(=自动)。显式配置优先;显式值即使不合格也不会被替换。
  2. 只认 Git for Windows:黑名单先于探测(System32 / WindowsApps / msys / cygwin / wsl)→ Git 布局校验(cmd|bin\git.exe + usr\bin\bash.exe + mingw64 或 msys-2.0.dll)→ git --version 必须含 .windows. → 一票否决:实跑 bash -c "uname -s" 必须是 MINGW(32|64)_NT-*。WSL / MSYS2 / Cygwin 的 bash 一律不算命中,宁可报错也不将就。
  3. 永不回退:pwsh-sandbox 维持无条件撤掉;解析失败直接抛出带引导的错误,绝不换一个 shell 顶上。
  4. fail-loud + 引导弹窗:启动日志逐条报告(当前值 / 15 条候选逐条结果 / 去哪儿改 / 下载链接 / 不回退声明);失败时弹一次窗,带内联 bashPath 编辑器(保存即写入 profile)与「去下载 Git for Windows」,并列出探测清单。
  5. 写入判定改为按宿主返回的布尔值——宿主拒绝写入时不再显示"已保存"(不静默假成功)。

测试:npm test 94/94;tests/align-official.mjs 四变体与官方组合文本逐字节对齐。

未在 Windows 真机验证(如实告知):注册表 Path 兜底、真实 Git 安装布局、WSL/WindowsApps/MSYS2 的实机拒绝行为、真实 uname 与 git --version 指纹、真 Git Bash 执行器——目前只有 fake io 单测与静态核对。

请 Windows 用户(尤其 issue #11 的报告者)用本版复验:若仍然失败,请把启动日志里的探测清单贴到 issue 里,我们立刻跟进 0.28.1。

Refs #11