fangorn/ex_git_objectstore
public
ref:main
feat: recursive/ort three-way merge strategies #56
open
Opened by cole.christensen@gmail.com
Links
No links yet.
Merge.merge_trees/4 performs a trivial three-way merge. Real git uses ort (modern default, replacing recursive) which handles criss-cross merges, rename conflicts, and content hunks more robustly.
Scope
- Implement the
ortalgorithm: for criss-cross (multiple merge-bases), recursively merge the bases first. - Rename-aware merge: reconcile renames on both sides before content merge.
- Content conflict markers matching git’s output.
Acceptance
- On a fixture with criss-cross history, produces the same merged tree as
git merge -s ort. - On a fixture with a rename conflict, reports the conflict the same way.