Skip to content

内置三栏冲突合并编辑器(ours / result / theirs) #6

Description

@zjywill

背景

冲突流程已有(横幅 + 整文件 ours/theirs/mark resolved),但逐块选择还得去外部编辑器改冲突标记。GitKraken 的三栏 merge tool 是它处理冲突体验好的关键。

方案(做简化版,不做字符级对齐)

  1. 数据:读工作区冲突文件,解析 <<<<<<< / ======= / >>>>>>> 标记切成 [普通段, 冲突段] 序列;冲突段含 ours/theirs 两份文本(diff3 风格再含 base,先忽略 base)
  2. UI:点冲突文件进入合并视图(复用中间面板 overlay):
    • 上下结构而非三栏起步:每个冲突段渲染成一个卡片,左半 ours(青)右半 theirs(紫),每半有 checkbox,可单选/全选(= 两边都要,ours 在前)
    • 顶部 "Take all ours / Take all theirs",底部 "Save & Mark Resolved"
  3. 保存:按选择拼接全文写回文件 + git add,从 conflicted 列表消失;一个都没选时禁用保存
  4. 编辑兜底:卡片支持直接编辑结果文本(TextEditor),满足手工微调
  5. 不做:语法高亮、字符级 diff、base 三方对齐(后续迭代)

验收

  • scratchpad conflict-demo 类冲突:逐块选边 + 混选(both)能正确生成结果并 resolved
  • 与现有 Continue/Abort 流程衔接:全部文件 resolved 后 Continue 亮起

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions