8 lines
2.2 KiB
Markdown
8 lines
2.2 KiB
Markdown
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` 字样且已无未合并条目的拒绝路径。
|