Merge++

Turning software merge conflicts into conflict-induced variability

Merging is an essential operation in software version control that reconciles concurrent changes to multiple working copies of a shared development artifact. However, available merge techniques often report considerable amounts of merge conflicts that must be resolved manually, bothering developers in their daily work and hampering continuous integration. Most research on software merging has tackled this problem by increasing the accuracy of conflict detection, yet with limited impact.

In Merge++, we aim to develop foundations that enable a novel paradigm of software version control that temporarily tolerates merge conflicts. The key idea is to take a radically different view on merge conflicts. Instead of enforcing their resolution upon each merge, conflicts shall be considered as a source of software variability that represents different ambitions of developers that shall be made explicit. A merged artifact that comprises such conflict-induced variability may vary its behavior. These different behaviors may be investigated. Eventually, based on the analysis results, developers may take informed decisions to permanently bind or even eliminate conflict-induced variability, which yields a deferred conflict resolution. Our approach to realize this research vision is to leverage concepts and techniques from research on software product lines, which deals with the systematic handling of software variability. In a nutshell, merge conflicts whose resolution is to be deferred shall be transparently converted to conflict-induced variability, while developers may continue working on individual projections of the integrated version. The binding of accumulated conflict-induced variability shall be informed by adapting concepts from software product-line analysis. The question of how to seamlessly integrate such systematic handling of conflict-induced software variability to efficiently deal with merge conflicts in the context of software version control constitutes an open scientific problem to be solved by Merge++.

seg

We summarize our two overall research goals as follows:

  • RG1: Writing working copy changes into a central repository or the main development branch may lead to conflicts in case of concurrent modifications. Instead of enforcing time-consuming conflict resolutions upon each merge attempt, we aim to decouple the writing of changes from conflict resolution by temporarily tolerating conflicts. While the conflicts may be resolved later, continuous development on working copies shall be possible in the meantime.
  • RG2: Deferring the resolution of merge conflicts not only accelerates development, but bares the potential for advanced (semi-)automated conflict resolution. By centrally accumulating conflict-induced variability which may be analyzed at the repository site, we aim at synthesizing informed conflict resolution recommendations and guided exploration of resolution spaces, thereby facilitating effective conflict resolution upon request.