On the Nature of Merge Conflicts: A Study of 2,731 Open Source Java Projects Hosted by GitHub

@article{Ghiotto2020OnTN,
  title={On the Nature of Merge Conflicts: A Study of 2,731 Open Source Java Projects Hosted by GitHub},
  author={Gleiph Ghiotto and Leonardo Gresta Paulino Murta and M{\'a}rcio de Oliveira Barros and Andr{\'e} van der Hoek},
  journal={IEEE Transactions on Software Engineering},
  year={2020},
  volume={46},
  pages={892-915}
}
When multiple developers change a software system in parallel, these concurrent changes need to be merged to all appear in the software being developed. [...] Key Result Our results give rise to three primary recommendations for future merge techniques, that - when implemented - could on one hand help in automatically resolving certain types of conflicts and on the other hand provide the developer with tool-based assistance to more easily resolve other types of conflicts that cannot be automatically resolved.Expand
What causes merge conflicts?
TLDR
This paper analyzed 182,273 merge scenarios from 80 projects written in eight different programming languages to find characteristics that increase the chances of a merge to have a conflict and discovered positive correlations between the occurrence of conflicts and the duration of the branch and the intersection of developers.
Causes of merge conflicts: a case study of ElasticSearch
TLDR
This work analyzed the development history of ElasticSearch, a large open-source project that heavily relies on branching (forking) and merging, and inspected 40 merge conflicts in detail, sampled from 534 conflicts not resolvable by a semi-structured merge tool.
What could the source code history tell UsAbout errors
TLDR
Evidence is given that developers should not be afraid of solving conflicts since just a small percentage of the conflicted merge scenarios are suspicious of having introduced bugs and this work presents that SZZ — an algorithm to find bug introducing commits — is labeled as being a bug-introducing commit.
Software Practitioners Perspective on Merge Conflicts and Resolution
Merge conflicts are undeniable events in collaborative software development. Merge conflicts arise when developers perform concurrent changes in the same part of code. Researcher and practitioners
Can Program Synthesis be Used to Learn Merge Conflict Resolutions? An Empirical Analysis
TLDR
A novel domain-specific language (DSL) is proposed that captures many of the repetitive merge conflict resolution patterns and learns resolution strategies as programs in this DSL from example resolutions and can resolve 11.4% of the conflicts that arise in the C++ files with 93.2% accuracy.
Challenges of Resolving Merge Conflicts: A Mining and Survey Study
In collaborative software development, merge conflicts arise when developers integrate concurrent code changes. Practitioners seek to minimize the number of merge conflicts because resolving them is
Understanding Merge Conflicts and Resolutions in Git Rebases
TLDR
This study uses the recently updated APIs of GitHub to study rebase activities in the pull requests and indicates that, to resolve textual conflicts, developers adopt similar strategies shown in existing studies on explicit merges.
Leveraging Structure in Software Merge: An Empirical Study
Large-scale software development today relies heavily on version control systems facilitating distributed development of software projects. For the purpose of merging diverging versions of the code
IntelliMerge: a refactoring-aware software merging technique
TLDR
This paper presents IntelliMerge, a graph-based refactoring-aware merging algorithm for Java programs that explicitly enhance this algorithm's ability in detecting and resolving refactororing-related conflicts.
Automated Regression Unit Test Generation for Program Merges
TLDR
An approach of regression unit test generation specifically for checking program merges according to the proposed test oracles is proposed and an algorithm to select UUTs based on the dependency analysis of the whole project is designed.
...
1
2
3
...

References

SHOWING 1-10 OF 43 REFERENCES
Understanding semi-structured merge conflict characteristics in open-source Java projects
TLDR
A catalog of conflict patterns expressed in terms of the structure of code changes that lead to merge conflicts is derived, focusing on conflicts reported by a semistructured merge tool that exploits knowledge about the underlying syntax of the artifacts.
Proactive detection of collaboration conflicts
TLDR
The design of Crystal is described, a publicly-available tool that uses speculative analysis to make concrete advice unobtrusively available to developers, helping them identify, manage, and prevent conflicts.
An Empirical Examination of the Relationship between Code Smells and Merge Conflicts
TLDR
Bad code design not only impacts maintainability, it also impacts the day to day operations of a project, such as merging contributions, and negatively impacts the quality of the resulting code.
Indicators for merge conflicts in the wild: survey and empirical study
TLDR
A prediction of merge costs based on lightweight indicators would be desirable to help developers recognize problematic merging scenarios before potential conflicts become too severe in the evolution of a complex software project.
How we resolve conflict: an empirical study of method-level conflict resolution
TLDR
To support conflict resolution in merging, this work aims to understand how conflicts are resolved in practice from large-scale study and suggests that most of conflicts are resolution by simple way.
A State-of-the-Art Survey on Software Merging
  • T. Mens
  • Computer Science
    IEEE Trans. Software Eng.
  • 2002
TLDR
A comprehensive survey and analysis of available merge approaches is provided and a number of important open problems and future research directions are suggested.
Improving early detection of software merge conflicts
TLDR
A novel solution that continuously merges uncommitted and committed changes to create a background system that is analyzed, compiled, and tested to precisely and accurately detect conflicts on behalf of developers, before check-in is presented.
Safe-commit analysis to facilitate team software development
TLDR
A program analysis is presented to identify committable changes that can be released early, without causing failures of existing tests, even in the presence of failing tests in a developer's local workspace.
Software Practitioner Perspectives on Merge Conflicts and Resolutions
TLDR
It is found that practitioners are directly impacted by their perception of the complexity of the conflicting code, and may alter the timeline in which to resolve these conflicts, as well as the methods employed for conflict resolution based upon that initial perception.
Semistructured merge: rethinking merge in revision control systems
TLDR
It is found that semistructured merge reduces the number of conflicts in 60% of the sample merge scenarios by, on average, 34%, compared to unstructured merge.
...
1
2
3
4
5
...