Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/.agents/knowledge-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 ↔ 嵌入文档的唯一权威映射)。
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 模型映射。
Expand Down
1 change: 1 addition & 0 deletions docs/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
55 changes: 55 additions & 0 deletions docs/releases/v0.0.20.md
Original file line number Diff line number Diff line change
@@ -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 <remote> --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)。
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Loading