Graduate Thesis Or Dissertation

Supporting merge comprehension when resolving merge conflicts

Public Deposited

Downloadable Content

Download PDF


Attribute NameValues
  • Distributed version control allows developers to manage software evolution among distributed development teams. But it does not eliminate all consistency and concurrency issues, and instead introduces additional complexity when merging code. And resolving merge conflicts is nontrivial when automated merging fails. In such cases, developers are forced to inspect the partially merged codebase and manually fix the conflicts. These resolution processes can be cognitively demanding for developers, who are forced to comprehend partially merged code that cannot be executed, or at best displays unexpected behavior, and therefore must be diagnosed by examining development histories across multiple branches. Thus, in this dissertation, we empirically explore the cognitive implications of resolving complex merge conflicts. To do this, we examined the characteristics of difficult merge conflicts from the developers' perspective through an exploratory mixed-methods study. This study revealed the importance of comprehension support during the resolution process, and we found that developer's trust in merge conflict resolution tools drops as the merge complexity increases. To understand the landscape of tool support for comprehension during a merge conflict, we conduct large-scale surveys of developers. We define a model that encapsulates the lifecycle of merge conflicts from the perspective of the developer, and use this model to understand where comprehension support is critical to a successful resolution. Additionally, we determine which lifecycle steps have major gaps in tool support. To address these gaps, we extend the concept of program comprehension to include the temporal characteristics intrinsic to merge conflicts (which we colloquially label merge comprehension). Where program comprehension refers to understanding how a software system or a part of it works at the point prior to making any changes to the code, merge comprehension refers to understanding a partially merged program that attempts to integrate incompatible versions of the same program. Additionally, although program comprehension focuses on exploring source code and other artifacts to identify and understand the subset of code relevant to the intended changes, merge comprehension requires a holistic understanding of the various versions of the program in order to identify and understand the subset of relevant code that should be integrated in the resolution. To explore the application of merge comprehension in practice, we built Synectic, a software development environment focused on supporting specific merge comprehension requirements. To broaden our understanding of how Synectic (or similar merge comprehension tools) affects software developers' comprehension and sensemaking during complex merge conflicts, we conducted a preliminary user study. Our findings show that providing interactive visualizations of version history, unrestricted access to historical and in-progress versions of program code, and visual structures for organizing complex information during merge conflicts reduces perceived complexity and cognitive load, and increases usability.
Resource Type
Date Issued
Degree Level
Degree Name
Degree Field
Degree Grantor
Commencement Year
Committee Member
Academic Affiliation
Rights Statement
Funding Statement (additional comments about funding)
  • NSF CCF-1560526
  • NSF CCF-2008089
  • NSF IIS-1559657
Peer Reviewed



This work has no parents.

In Collection: