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

8 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FAIL
apps/ely-tree/src/conflict.rs:104:`conflict-marker-size` 直接解析为 `usize`,与 Git 对非正数和无效值采用七字符标记的规则不一致,违反 TREE-09。真实 Git 2.56.0 与 macOS 窗口复现:`.gitattributes` 写入 `a.txt conflict-marker-size=0`,双方修改后合并,Git 生成一个七字符冲突块,应用读成 `size: 0`、零个冲突块,三侧都显示带标记的工作树正文;点击“标为已解决”直接清空未合并索引条目,并把全部冲突标记暂存,剩余标记确认缺失。值为 `-1` 或 `abc` 时,Git 同样生成七字符块,应用读取失败,解决控件消失。修复方向:按 Git 的有效标记宽度规则处理属性值,展示、块选择及剩余标记确认共用有效宽度,覆盖零值、负值和无效值。
reference/Ely-GPUI-Components/src/git/merging.rs:153:`tokenize_lines()` 把正文中的独立 `\r` 当作行边界,Git 冲突标记按 LF 行划分,因而正文内相似字符被误认成分隔符,违反 TREE-09 并破坏块级选择结果。真实 Git 复现:基底为 `base\n`,当前侧为 `prefix\r=======\rOURS_END\n`,传入侧为 `THEIRS\n`;Git 写出一个正常冲突块。使用钉住版本的实际解析代码读取后,当前侧只剩 `prefix\r`,传入侧混入 `OURS_END\n=======\n`;取传入侧得到 `OURS_END\n=======\nTHEIRS\n`,实际所选侧应为 `THEIRS\n`。修复方向:冲突扫描、区域切分及替换统一采用 Git 的标记行边界,保留正文中的独立回车和原始字节,并覆盖混合 LF/独立 CR 的真实合并。
apps/ely-tree/src/moves.rs:89:通过任意子串 `CONFLICT` 判断冲突停顿,仍会隐藏 hook 的真实失败输出,违反 §13.3。真实 macOS 窗口复现:合并冲突已暂存,未合并索引条目为空,安装输出 `CONFLICT_CHECK_FAILED: commit message lacks required issue ID` 并退出 1 的 `pre-commit` hook;点击“继续”,`git merge --continue` 返回 1,应用只显示“Stopped on conflicts. Resolve them, then continue.”,错误对话框和 hook 原话均缺失。修复方向:核实 Git 自身的冲突诊断及实际未合并状态,保留 hook 失败原话,覆盖包含 `CONFLICT` 字样且已无未合并条目的拒绝路径。