Merge Conflict Resolutions

Motivation

While merging branches in a software project, merge conflicts can occur. Merge conflicts consist of one or more conflicting chunks, that each have to be resolved, manually, by the developers. To resolve a conflicting chunk, developers usually choose source (“theirs”) or destination (“yours”) chunks in the typical three-way merge. We call such resolutions “canonical resolutions”. However, developers can also create their own resolutions, i.e. “non-canonical resolutions”. Automatic tools can test and suggest canonical resolutions. This is not easily possible for non-canonical resolutions. We thus want to study non-canonical resolutions further.

Research Questions

  • How are merge conflicts resolved, if a non-canonical resolution is used?

    • How do they differ? E.g., added/adapted code, semantical differences, intertwining of “theirs” and “yours”?
  • Are these types of resolutions dependent on the number of conflicts in a merge?

  • Are these types of resolutions dependent on whether conflicts are related or not?

Prior Work

You can build on a prototype, which is able to batch process git repositories (download them, find conflicting merges, check which ones are resolved canonical (in granularity of merges, files, chunks)).

Required Skills

  • Basic understanding of Git and merging
  • Will to read/understand code of others