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

View File

@@ -38,3 +38,20 @@ Follow eepp's established namespace style: prefer the appropriate `using namespa
declarations and unqualified eepp type names, such as `UISplitter`, over repeatedly spelling fully
qualified names such as `EE::UI::UISplitter`. Keep explicit qualification only where it is required
to resolve ambiguity or avoid importing an unusually broad namespace into an unsuitable scope.
## Control-Statement Braces
Use braces around the body of an `if`, `else`, `for`, `while`, or similar control statement whenever
that body occupies more than one physical source line. A statement remains visually multi-line even
when C++ treats it as a single statement, so a wrapped function call must be braced:
```cpp
if ( condition ) {
object->function(
argument,
anotherArgument );
}
```
An unbraced body is acceptable only when the complete body fits on one physical source line. Apply
this rule when writing or modifying code; do not add unrelated braces throughout untouched code.