Factors That Affect Merge Conflicts: A Software Developers’ Perspective - Costa, Catarina; Menezes, José; Trindade, Bruno; Santos, Rodrigo (Anais do Simpósio Brasileiro de Engenharia de Software (SBES), 2021)
Merge conflicts are very common in collaborative software development. Such collaborative work is usually supported by the use of branches, which at some point can be merged. In the technical literature, several studies propose mechanisms to avoid conflicts, even though this is not always possible. Some recent studies have tried to identify factors that lead to conflicts. In our study, we aim to investigate factors that can lead to conflicts, or that can somehow reduce the chances of conflicts, from the developers’ perspective. To do so, we conducted a survey research with 109 software developers to understand the way they use branches, the occurrence of conflicts and resolution process, and factors that can lead or avoid conflicts. Results show that the use of branches is very common and mostly has the purpose of creating a new feature or fixing a bug. According to the participants, in most projects, developers have autonomy to create new branches and sometimes conflicts happen. The main factors that can lead to conflicts are “the time a branch is isolated” and “lack of communication”. On the other hand, the factors cited as good practices to avoid conflicts were “improve team communication” and “less branching-duration”.