3.9 KiB
FAIL
apps/ely-tree/src/work.rs:59 — 暂存已暂存重命名文件的后续编辑会失败。场景:提交 b.txt,执行 git mv b.txt c.txt,继续修改 c.txt,再点“改动”分区中 c.txt 的暂存按钮。生成的 git add --all -- c.txt b.txt 返回 fatal: pathspec 'b.txt' did not match any files(退出码 128),新编辑仍留在工作区。真实 Git 探针及真窗口 AXPress 均复现;现有 15 项 ElyTree 测试全部通过,却漏掉此 RM 状态。修复方向:按操作和当前索引决定旧路径;已暂存重命名的后续暂存使用当前路径,取消暂存保留其所需的旧路径,并补此场景的回归测试。
apps/ely-tree/src/work.rs:36 — 首个提交前,文件暂存后继续编辑会导致取消暂存失败;全部取消的第 49 行分支同样受影响。场景:初始化仓库,写入并暂存 a.txt,再修改其工作区内容,执行取消暂存。当前 git rm --cached -r -q -- a.txt 返回 staged content different from both the file and the HEAD(退出码 1),索引保留原内容。真实 Git 探针复现 AM 状态;现有测试仅覆盖索引与工作区内容相同的情况。修复方向:显式取消暂存时允许移除首提交前内容不同的索引条目,保持工作区文件,并覆盖单文件及全部取消暂存。
apps/ely-tree/src/watch.rs:27 — 链接 worktree 的监听范围遗漏共享 Git 目录,外部引用更新无法触发重读,违反 TREE-02 和 PRD §13.3。场景:仅打开链接 worktree;在主仓库执行 git update-ref refs/heads/linked SECOND。引用写入主仓库的 .git/refs,当前监听仅覆盖链接工作区与 .git/worktrees/linked。窗口探针等待 3 秒后仍持有旧 HEAD;直接调用 status::read 已读到 SECOND。修复方向:解析并监听实际的 --git-common-dir,同时保留 worktree 私有 Git 目录监听,并增加共享引用更新的窗口回归测试。
apps/ely-tree/src/repo.rs:111 — 克隆输出按 CR 单独切块,使 LF 结尾的完整进度行积压。场景:克隆到一个接受连接后持续等待的 git:// 服务。Git 已输出 Cloning into '…'...\n,follow 的回调在等待期间保持为零;停止后流关闭才交付该行。真实 Git 探针等待 800 毫秒并复现,当前测试仅在克隆结束后检查输出。修复方向:同时识别 CR 和 LF 并立即交付完整行,传播读取错误,补充克隆进行期间的输出断言。
apps/ely-tree/src/status.rs:25 — 缺失的上游比较计数被默认零值掩盖,界面错误显示同步状态。场景:设置 origin/main 为上游后删除 refs/remotes/origin/main。Git 的 porcelain 保留 branch.upstream、省略 branch.ab,git branch -vv 显示 [origin/main: gone];当前 Head 与上游存在且同步时完全相同,真窗口仍显示 origin/main ↑0 ↓0。修复方向:保存计数是否可用的状态,第 25、26 行的零值仅代表实际收到的零计数;view.rs:85 按此状态呈现上游,并补充上游引用删除的回归测试。
apps/ely-tree/src/view.rs:109 — 界面缺少当前 Git 可执行文件路径,未满足 PRD §13.3 的“显示当前路径和版本”。场景:使用随附 Git 或通过 ELY_GIT 选择系统 Git,状态栏只呈现版本与来源;左侧路径属于工作区,应用内没有所选 Git 路径的入口。真窗口核对与渲染代码一致,Git.path 仅在启动日志中出现。修复方向:在当前 Git 的界面信息中呈现实际使用的可执行文件路径。
/Users/zacharyzhang/Documents/GitHub/Ely-GPUI-Components/src/git/changes.rs:24 — 4f8f3bd 新增的 Changed::lines 注释包含 15 个英文单词,超过 agents.md 的十词上限。场景:对新增注释按空白分词,Added and removed; None when not counted, as for a binary file or a folder. 得到 15 词。修复方向:将该注释缩短到十词以内,保持单行。