diff --git a/CHANGELOG.md b/CHANGELOG.md index 2494337..4829cff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,16 @@ ## [Unreleased] +## [0.0.20] - 2026-10-17 — Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断 + ### Fixed - **Branches 视图「Delete Remote Branch」对陈旧远程分支误报失败且无原因**:PR 合并后远端自动删除的分支,本地 remote-tracking ref 在下次 `fetch --prune` 前一直保留,视图仍列出;右键删除时 `git push --delete` 被服务端拒绝(`remote ref does not exist`),且 `catch {}` 吞掉真实报错,只回显笼统的「N failed」。现在「服务端已无此 ref」被识别为目标态已达成——按成功收尾并清理本地陈旧 tracking ref(通知如实标注 *already gone on remote*);真失败(保护分支拒绝 / 认证 / 网络)则经 stderr 优先提取,在通知中逐分支附上真实原因,并联动 Show Output 查看完整输出。engine 纯逻辑 `isRemoteRefMissingError` / `formatRemoteDeleteResult` 落于 `engine/ref/remote-ref.ts`,全量单测覆盖。 +### Changed + +- **错误文本提取单一事实源(`gitErrorText`)**:新增 `engine/git-state/git-error.ts` 统一「非空白 stderr 优先 → message → String 兜底」提取语义,`remote-commands` / `history-commands` 两处内联拷贝改为引用;Push 对话框 / Update Project / Merge 对话框的失败通知随之升级为 stderr 优先(真实原因直达,不再只显通用串)。 + ## [0.0.19] - 2026-10-17 — Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级 ### Fixed diff --git a/docs/.agents/knowledge-map.md b/docs/.agents/knowledge-map.md index 86993fb..d6dcbb7 100644 --- a/docs/.agents/knowledge-map.md +++ b/docs/.agents/knowledge-map.md @@ -29,7 +29,7 @@ - [工程实施方案](../docs/architecture/engineering-plan.md) — 路径 B 架构 + M0-M5 里程碑(**开发蓝图**)。 - [Git 功能矩阵](../docs/requirements/idea-feature-matrix.md) — 56 功能点 / 8 组(**验收基线**,参考 IDEA 等成熟实现)。 - [调研报告](../docs/research/README.md) — SCM 集成 / 工程蓝图 / 发布 CI / AI 接缝四路循证报告。 -- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.19](../releases/v0.0.19.md))。 +- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.20](../releases/v0.0.20.md))。 ## 图资产(docs/assets/) - [Mermaid 源图索引](../assets/mermaid/README.md) — 全项目 Mermaid 源图统一管理 + **溯源矩阵**(mermaid ↔ archify ↔ 嵌入文档的唯一权威映射)。 diff --git a/docs/README.md b/docs/README.md index 2456e5f..acef8a7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ - [Agentic Git 偏好配置](./features/agentic-git-preferences.md) — Agentic Git 预置:Base Branch + Commit / Create PR / Review 三项 agent 指令偏好(多行文本域 + 内置默认模板;M5 前置铺垫)。 ## 发布说明 -- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.19 Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级](./releases/v0.0.19.md)。 +- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.20 Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断](./releases/v0.0.20.md)。 ## 调研报告(循证依据) - [02 · VS Code SCM API 与 vscode.git 集成路径](./research/02-vscode-scm-integration.md) — 路径 B 决策依据、SCM 稳定/proposed API 边界、changelist 模型映射。 diff --git a/docs/releases/README.md b/docs/releases/README.md index 449f050..acfa5e8 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -8,6 +8,7 @@ | 版本 | 说明 | 日期 | |---|---|---| +| [v0.0.20](./v0.0.20.md) | Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断 | 2026-10-17 | | [v0.0.19](./v0.0.19.md) | Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级 | 2026-10-17 | | [v0.0.18](./v0.0.18.md) | Commit / Branches 标题栏重构 · 批量 Discard Changes · 分支级 Push · 双市场发布重启 | 2026-09-10 | | [v0.0.17](./v0.0.17.md) | Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐 · 稳定性与体验修复 | 2026-09-09 | diff --git a/docs/releases/v0.0.20.md b/docs/releases/v0.0.20.md new file mode 100644 index 0000000..3b1c10a --- /dev/null +++ b/docs/releases/v0.0.20.md @@ -0,0 +1,55 @@ +# Hyper Git - Agentic Git v0.0.20 — Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断 + +> 本版核心:**修复 Branches 视图「Delete Remote Branch」对「服务端已不存在」的远程分支误报失败、且删除失败时不显示任何原因的问题**。PR 合并后被 GitHub 自动删除的分支,在下次 `fetch --prune` 前会以陈旧 remote-tracking ref 的形式留在 Branches 视图中;对它执行删除曾被服务端拒绝并回显笼统的「N failed」。本版把这类分支识别为「目标态已达成」——按成功收尾、就地清理本地陈旧 ref;真正的失败(保护分支拒绝 / 认证 / 网络)则在通知中逐分支附上 git 的真实报错,并可直达 Show Output 查看完整输出。 + +--- + +## ✨ 亮点速览 + +- **陈旧远程分支不再误报失败**:删除「服务端已无此 ref」的分支(典型:PR 合并后远端自动删除)时,通知如实标注 `N already gone on remote (pruned local tracking ref)` 并同步清理本地陈旧 tracking ref,视图中的「幽灵分支」就地消失。 +- **删除失败可诊断**:真失败不再只回显笼统的「N failed」——保护分支拒绝、认证失败、网络错误等真实原因(stderr 优先)逐分支附在通知中,超长折叠单行、超 4 条截断标注;配合 **Show Output** 按钮直达 Hyper Git Console 查看完整输出。 +- **错误文本提取单一事实源(`gitErrorText`)**:新增 engine 纯函数统一「非空白 stderr 优先 → message → 兜底」提取语义;Push 对话框 / Update Project / Merge 对话框的失败通知随之升级为 stderr 优先,真实原因直达。 +- **受保护主干与既有防护不变**:main / master 硬阻断、当前分支上游软警示、删除前 modal 确认等既有行为全部保留。 + +--- + +## 🧩 特性详述 + +### 1. Delete Remote Branch 三桶语义(#147) + +删除循环按结果三桶处理,通知如实计数: + +- **成功**:`Deleted remote branch origin/foo`(单条)/ `Deleted N remote branches`(多条); +- **服务端已无此 ref(already gone)**:`git push --delete` 被服务端以 `remote ref does not exist` 拒绝时,经 engine 分类器 `isRemoteRefMissingError`(匹配 git 2.x 规范文案及旧服务端变体,大小写不敏感)识别——该分支的目标态(服务端无此分支)已天然达成,按成功收尾并清理本地陈旧 tracking ref;通知单列 `N already gone on remote (pruned local tracking refs)`,不以误导性的「Deleted 0 …」开头; +- **真失败**:保护分支拒绝(如删除远端当前分支)、认证 / 网络错误等——失败原因经 `gitErrorText` 提取(stderr 优先),通知逐分支附 `branch (原因)`;失败级通知联动 **Show Output** 查看完整 stderr。 + +### 2. 错误文本提取单一事实源 `gitErrorText`(#147) + +- 新增 `engine/git-state/git-error.ts`(零 vscode 依赖,全量单测):统一 CLI 通道(`execGit` 透传的 `.stderr`)与 vscode.git API 通道(GitError)的提取语义——非空白 stderr 优先(trim 后返回),回退 message,最终 `String(e)` 兜底; +- `remote-commands` / `history-commands` 的两处内联实现改为引用该单一事实源;Push 对话框 / Update Project / Merge 对话框失败通知由通用 message 升级为 stderr 优先(如「无上游」「non-fast-forward」等失败原因直接可读); +- 存量 adapter 中约 13 处旧式内联 `errMsg`(只读 message)为预先存在的迁移债,将在后续版本逐步迁移,不影响本版行为。 + +--- + +## ⚙️ 升级与兼容 + +- **无破坏性变更**:全部既有命令、视图与配置项保留;删除确认弹窗、受保护主干(main / master)硬阻断、当前分支上游软警示行为与 v0.0.19 一致; +- **行为改进**:仅删除分支场景的通知文案与失败路径变化(更诚实、更可诊断);`already gone` 分支的本地 tracking ref 现会被主动清理(此前仅成功删除项清理)。 + +--- + +## 📦 安装 + +- **VS Code Marketplace**:搜索 `Hyper Git - Agentic Git` 直接安装或更新。 +- **Open VSX**:搜索 `Hyper Git - Agentic Git` 直接安装或更新(覆盖 Cursor / Windsurf / VSCodium 等 Open VSX 系编辑器)。 +- **手动**:从 [Releases](https://github.com/ThreeFish-AI/hyper-git/releases/tag/v0.0.20) 下载 `hyper-git-agentic-git-0.0.20.vsix` → 命令面板 `Extensions: Install from VSIX`。 + +**系统要求**:VS Code ≥ 1.85.0,且启用内置 Git 扩展(`vscode.git`,默认随附)。仅支持本地 git 仓库,不支持虚拟 / Web 工作区。 + +--- + +## 💬 反馈 + +欢迎在 [GitHub Issues](https://github.com/ThreeFish-AI/hyper-git/issues) 反馈问题与建议。完整工程视角变更记录见 [CHANGELOG](../../CHANGELOG.md)。 + +许可证:[MIT](https://github.com/ThreeFish-AI/hyper-git/blob/master/LICENSE)。 diff --git a/package.json b/package.json index 56b8ac3..7c8188a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "theme": "dark" }, "description": "Hyper Git brings IntelliJ IDEA's powerful Git & Commit modules to VS Code, enhanced with AI-powered autonomous agents for intelligent repository management. Experience Git in a higher dimension.", - "version": "0.0.19", + "version": "0.0.20", "publisher": "ThreeFish-AI", "license": "MIT", "preview": true,