Add integrated Git conflict resolution workflow

Introduce a three-pane UIMergeView with an editable shared result
document, conflict navigation and acceptance actions, live diff
highlighting, synchronized scrolling, and contextual pane labels.

Read conflict stages directly from Git's index, detect paused merge
operations, restore conflict sessions, and support resolving, staging,
recreating, continuing, committing, and aborting operations.

Add repository-aware conflict state handling, safe asynchronous
lifetimes, merge operation UI, configurable key modifiers, i18n
strings, and focused merge-view and Git conflict tests.
This commit is contained in:
Martín Lucas Golini
2026-08-27 22:18:58 -03:00
parent 7d322a035f
commit 66d22ea5bb
29 changed files with 2604 additions and 107 deletions
+41 -1
View File
@@ -308,7 +308,47 @@ Name your stash (optional):</string>
<string name="git_stash_save">Save Stash</string>
<string name="git_stashes">Stashes</string>
<string name="git_tags">标签</string>
<string name="git_unmerged">未合并</string>
<string name="git_conflicts">冲突</string>
<string name="git_conflict_missing_result">此冲突需要选择保留或删除文件。</string>
<string name="git_save_and_stage">保存并暂存</string>
<string name="git_previous_conflict_file">上一个文件</string>
<string name="git_next_conflict_file">下一个文件</string>
<string name="git_continue_operation">继续</string>
<string name="git_commit_merge">提交</string>
<string name="git_abort_operation">中止</string>
<string name="git_no_continuable_operation">没有可继续的 Git 操作。</string>
<string name="git_no_abortable_operation">没有可中止的 Git 操作。</string>
<string name="git_conflict_state_failed">无法读取 Git 冲突状态。</string>
<string name="git_merge_tab">合并:%s</string>
<string name="git_merge_base">基础版本</string>
<string name="git_merge_result">结果</string>
<string name="git_merge_current_branch">当前分支(我们的版本)</string>
<string name="git_merge_incoming_branch">传入分支(他们的版本)</string>
<string name="git_merge_upstream">上游</string>
<string name="git_merge_replayed_commit">重放的提交(您的更改)</string>
<string name="git_merge_ours_stage">我们的版本(阶段 2)</string>
<string name="git_merge_theirs_stage">他们的版本(阶段 3)</string>
<string name="git_merge_not_present">不存在</string>
<string name="git_conflict_save_failed">无法保存冲突解决结果。</string>
<string name="git_conflict_markers_remain">保存的结果中仍包含可识别的冲突标记。</string>
<string name="git_conflict_still_unmerged">Git 仍将此路径报告为未合并。</string>
<string name="git_conflict_recreate_failed">无法在 Git 索引中恢复冲突。</string>
<string name="git_conflict_recreate_save_failed">冲突已在 Git 索引中恢复,但无法将冲突标记保存到磁盘。</string>
<string name="git_resolve_before_continue">继续之前请解决并暂存所有冲突。</string>
<string name="git_confirm_abort_operation">中止当前 Git 操作?</string>
<string name="git_resolve_conflict">解决冲突</string>
<string name="git_accept_ours">接受我们的版本</string>
<string name="git_accept_theirs">接受他们的版本</string>
<string name="git_conflict_no_longer_unmerged">Git 不再将此路径报告为未合并。</string>
<string name="git_operation_merge">正在合并</string>
<string name="git_operation_rebase">正在变基</string>
<string name="git_operation_cherry_pick">正在拣选</string>
<string name="git_operation_revert">正在还原</string>
<string name="git_operation_stash_apply">正在应用储藏</string>
<string name="git_operation_ready">%s · 可以继续</string>
<string name="git_operation_ready_commit">%s · 可以提交</string>
<string name="git_operation_conflicts">%s · %d 个冲突</string>
<string name="git_operation_conflict">%s · %d 个冲突</string>
<string name="git_unstage">Unstage</string>
<string name="git_untracked">Untracked</string>
<string name="global_search">全局搜索</string>