Files
ElyOffice/tasks/reviews/C13.2-r3.md
T

1.6 KiB
Raw Blame History

FAIL

apps/ely-tree/src/shown.rs:294 — 文件类型变化的两段补丁共用折叠行游标,第二段新增块把 next 重置为 1,已删除的旧内容再次被显示成未改动行,违反 TREE-03、04。复现:HEAD 的 a.txt 为 "one\ntwo\n",将其换成指向 other.txt 的符号链接;改动区与已暂存区都在删除块和新增块后生成 "2 unchanged lines",展开后出现 one、two,右侧行号为 2、3,而 Git 新侧只有一行 other.txt。应用路径探针与真实窗口均复现;现有类型变化回归在 tests/diffs.rs:417 过滤了 Folded,仍然通过。修复方向:按文件段保存两侧边界并计算折叠区,覆盖类型变化时全部展示行与行号,确认已删除内容仅出现在删除块。

apps/ely-tree/src/shown.rs:194 — 工作树侧用 fs::read 跟随符号链接,以目标文件内容判定链接差异,导致合法链接差异读取失败或被错误分类,违反 TREE-03。复现:提交普通 a.txt 后将其替换成指向 other.txt 的符号链接,other.txt 缺失时,Git diff 正常给出删除与新增两段,点击改动区 a.txt 却显示 "This diff could not be read / No such file or directory";other.txt 含非 UTF-8 字节时,链接路径本身为 UTF-8,界面仍把其文本差异归为二进制。应用路径探针覆盖两种情形,真实窗口确认缺失目标的读取错误;已暂存区通过 cat-file 读取链接 blob,能正常显示。修复方向:按工作树文件类型读取 Git 比较的对象,符号链接读取链接路径字节,并覆盖缺失目标及非 UTF-8 目标的回归。