Skip to content

Latest commit

 

History

History
15 lines (9 loc) · 1.03 KB

README.md

File metadata and controls

15 lines (9 loc) · 1.03 KB

Haxe IJ Merge

A Haxe port of IntelliJ's cool diff merging algorithm.

A demo can be found here: demo

Haxe can target JavaScript, JVM, C++, and others listed here.

Regular merging will merge all non-conflicting changes, in a similar way to how Git's recursive or ort algorithms work, but working on word level, rather than a hunk level.

Greedy merging assumes that all resolve results are validated by the user, so trades some accuracy for a higher chance of a good resolve. It works by assuming that A-X-B and B-X-A conflicts should have equal results, meaning that insert-insert conflicts cannot be merged because we don't know the insertion order. Therefore, merge delete-insert by applying both, delete-delete by merging deleted intervals, and modifications the same as delete-insert changes.

All merges match the original IntelliJ implementation, but greedy merging sometimes produces slightly weird results.