Available at https://mergeresolver.github.io.
MergeResolver is a tool to automate the resolution of merge conflicts that arise during development. It is a sophisticated tool that is aware of the code's syntax and semantics. This allows automated conflict resolution in cases where simple text-based differencing would fail.
MergeResolver works by parsing the source code into abstract syntax trees (ASTs) using GrammaTech's SEL. It then computes a custom tree-based difference over these trees, tailored for good performance over source code. The developer can view the result in an intuitive and standard workflow, such as via the GitHub Checks API.
In some cases, this approach is not sufficient to resolve merge conflicts. If desired, MergeResolver can next search the space of possible conflict resolutions until it finds one that passes the program's test suite. It can present this resolution to a developer for review and further modification.
This material is based upon work supported by the Air Force and DARPA under Contract(s) No. D16PC00103, D17PC00096 and FA8750-20-C-0208. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Air Force or DARPA.