skip to main content
10.1145/3377024.3377047acmotherconferencesArticle/Chapter ViewAbstractPublication PagesvamosConference Proceedingsconference-collections
research-article

Causes of merge conflicts: a case study of ElasticSearch

Published:06 February 2020Publication History

ABSTRACT

Software branching and merging allows collaborative development and creating software variants, commonly referred to as clone & own. While simple and cheap, a trade-off is the need to merge code and to resolve merge conflicts, which frequently occur in practice. When resolving conflicts, a key challenge for developer is to understand the changes that led to the conflict. While merge conflicts and their characteristics are reasonably well understood, that is not the case for the actual changes that cause them.

We present a case study of the changes---on the code and on the project-level (e.g., feature addition, refactoring, feature improvement)---that lead to conflicts. We analyzed the development history of ElasticSearch, a large open-source project that heavily relies on branching (forking) and merging. We inspected 40 merge conflicts in detail, sampled from 534 conflicts not resolvable by a semi-structured merge tool. On a code (structural) level, we classified the semantics of changes made. On a project-level, we categorized the decisions that motivated these changes. We contribute a categorization of code- and project-level changes and a detailed dataset of 40 conflict resolutions with a description of both levels of changes. Similar to prior studies, most of our conflicts are also small; while our categorization of code-level changes surprisingly differs from that of prior work. Refactoring, feature additions and feature enhancements are the most common causes of merge conflicts, most of which could potentially be avoided with better development tooling.

References

  1. [n.d.]. Online Appendix. https://bitbucket.org/easelab/elasticsearchstudy.Google ScholarGoogle Scholar
  2. Hadil Abukwaik, Andreas Burger, Berima Andam, and Thorsten Berger. 2018. Semi-automated feature traceability with embedded annotations. In ICSME.Google ScholarGoogle Scholar
  3. Paola Accioly, Paulo Borba, and Guilherme Cavalcanti. 2018. Understanding semi-structured merge conflict characteristics in open-source java projects. Empirical Software Engineering 23, 4 (2018), 2051--2085.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Berima Andam, Andreas Burger, Thorsten Berger, and Michel Chaudron. 2017. FLOrIDA: Feature LOcatIon DAshboard for Extracting and Visualizing Feature Traces. In VaMoS.Google ScholarGoogle Scholar
  5. Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines. Springer.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Sven Apel, Jörg Liebig, Benjamin Brandl, Christian Lengauer, and Christian Kästner. 2011. Semistructured Merge: Rethinking Merge in Revision Control Systems. In ESEC/FSE. ACM, 190--200.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Wesley K. G. Assunção, Roberto E. Lopez-Herrejon, Lukas Linsbauer, Silvia R. Vergilio, and Alexander Egyed. 2017. Reengineering Legacy Applications into Software Product Lines: A Systematic Mapping. Empirical Software Engineering 22, 6 (2017), 2972--3016.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Thorsten Berger, Ralf Rublack, Divya Nair, Joanne M. Atlee, Martin Becker, Krzysztof Czarnecki, and Andrzej Wasowski. 2013. A Survey of Variability Modeling in Industrial Practice. In VaMoS.Google ScholarGoogle Scholar
  9. Thorsten Berger, Jan-Philipp Steghöfer, Tewfik Ziadi, Jacques Robin, and Jabier Martinez. 2019. The State of Adoption and the Challenges of Systematic Variability Management in Industry. Empirical Software Engineering (2019). Preprint.Google ScholarGoogle Scholar
  10. Yuriy Brun, Reid Holmes, Michael D. Ernst, and David Notkin. 2011. Proactive Detection of Collaboration Conflicts. In ESEC/FSE. New York, NY, USA.Google ScholarGoogle Scholar
  11. John Businge, Openja Moses, Sarah Nadi, Engineer Bainomugisha, and Thorsten Berger. 2018. Clone-Based Variability Management in the Android Ecosystem. In ICSME.Google ScholarGoogle Scholar
  12. Guilherme Cavalcanti, Paulo Borba, and Paola Accioly. 2017. Evaluating and Improving Semistructured Merge. OOPSLA (Oct. 2017).Google ScholarGoogle Scholar
  13. DB-Engines. 2019. Ranking of Search Engines. https://db-engines.com/en/ranking/search+engine.Google ScholarGoogle Scholar
  14. Gleiph Ghiotto Lima de Menezes. 2016. On the nature of software merge conflicts. Ph.D. Dissertation. Federal Fluminense University.Google ScholarGoogle Scholar
  15. Danny Dig, Tien N Nguyen, and Ralph Johnson. 2006. Refactoring-aware software configuration management. Technical Report UIUCDCS.Google ScholarGoogle Scholar
  16. Yael Dubinsky, Julia Rubin, Thorsten Berger, Slawomir Duszynski, Martin Becker, and Krzysztof Czarnecki. 2013. An Exploratory Study of Cloning in Industrial Software Product Lines. In CSMR.Google ScholarGoogle Scholar
  17. Elastic. 2017. Getting Started. https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html.Google ScholarGoogle Scholar
  18. Sina Entekhabi, Anton Solback, Jan-Philipp Steghöfer, and Thorsten Berger. 2019. Visualization of Feature Locations with the Tool FeatureDashboard. In SPLC.Google ScholarGoogle Scholar
  19. Tammo Freese. 2006. Refactoring-aware version control. In ICSE.Google ScholarGoogle Scholar
  20. Sergio Garcia, Daniel Strueber, Davide Brugali, Alessandro Di Fava, Philipp Schillinger, Patrizio Pelliccione, and Thorsten Berger. 2019. Variability Modeling of Service Robots: Experiences and Challenges. In VaMoS.Google ScholarGoogle Scholar
  21. Gleiph Ghiotto, Leonardo Murta, Márcio Barros, and André van der Hoek. 2018. On the Nature of Merge Conflicts: a Study of 2,731 Open Source Java Projects Hosted by GitHub. IEEE Transactions on Software Engineering 99, 1 (2018), 1--25.Google ScholarGoogle Scholar
  22. G. Gousios, M. A. Storey, and A. Bacchelli. 2016. Work Practices and Challenges in Pull-Based Development: The Contributor's Perspective. In ICSE.Google ScholarGoogle Scholar
  23. Georgios Gousios, Andy Zaidman, Margaret-Anne Storey, and Arie van Deursen. 2015. Work Practices and Challenges in Pull-based Development: The Integrator's Perspective. In ICSE.Google ScholarGoogle Scholar
  24. M. L. Guimarães and A. R. Silva. 2012. Improving early detection of software merge conflicts. In ICSE.Google ScholarGoogle Scholar
  25. Anja Guzzi, Alberto Bacchelli, Yann Riche, and Arie van Deursen. 2015. Supporting Developers' Coordination in the IDE (CSCW '15).Google ScholarGoogle Scholar
  26. Abram Hindle. 2010. Software process recovery: recovering process from artifacts. In WCRE.Google ScholarGoogle Scholar
  27. Wenbin Ji, Thorsten Berger, Michal Antkiewicz, and Krzysztof Czarnecki. 2015. Maintaining Feature Traceability with Embedded Annotations. In SPLC.Google ScholarGoogle Scholar
  28. Bakhtiar Khan Kasi and Anita Sarma. 2013. Cassandra: Proactive Conflict Minimization Through Optimized Task Scheduling. In ICSE.Google ScholarGoogle Scholar
  29. Jacob Krueger and Thorsten Berger. 2020. Activities and Costs of Re-Engineering Cloned Variants Into an Integrated Platform. In VaMoS.Google ScholarGoogle Scholar
  30. Max Lillack, Stefan Stanciulescu, Wilhelm Hedman, Thorsten Berger, and Andrzej Wasowski. 2019. Intention-Based Integration of Software Variants. In ICSE.Google ScholarGoogle Scholar
  31. S. McKee, N. Nelson, A. Sarma, and D. Dig. 2017. Software Practitioner Perspectives on Merge Conflicts and Resolutions. In ICSME.Google ScholarGoogle Scholar
  32. Tom Mens. 2002. A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering 28, 5 (2002), 449--462.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Leticia Montalvillo and Oscar Díaz. 2015. Tuning GitHub for SPL development: branching models & repository operations for product engineers. In SPLC.Google ScholarGoogle Scholar
  34. Leticia Montalvillo, Oscar Díaz, and Thomas Fogdal. 2018. Reducing coordination overhead in SPLs: peering in on peers. In SPLC.Google ScholarGoogle Scholar
  35. Julia Rubin and Marsha Chechik. 2013. A Framework for Managing Cloned Product Variants. In ICSE.Google ScholarGoogle Scholar
  36. Julia Rubin, Krzysztof Czarnecki, and Marsha Chechik. 2015. Cloned product variants: from ad-hoc to managed software product lines. Software Tools for Technology Transfer 17, 5 (2015), 627--646.Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. A. Sarma, D. F. Redmiles, and A. van der Hoek. 2012. Palantır: Early Detection of Development Conflicts Arising from Parallel Code Changes. IEEE Transactions on Software Engineering 38, 4 (July 2012), 889--908.Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Ştefan Stănciulescu, Sandro Schulze, and Andrzej Wąsowski. 2015. Forked and Integrated Variants in an Open-Source Firmware Project. In ICSME.Google ScholarGoogle Scholar
  39. Ştefan Stănciulescu, Sandro Schulze, and Andrzej Wąsowski. 2015. Forked and integrated variants in an open-source firmware project. In ICSME.Google ScholarGoogle Scholar
  40. Mark Staples and Derrick Hill. 2004. Experiences Adopting Software Product Line Development Without a Product Line Architecture (APSEC).Google ScholarGoogle Scholar
  41. Daniel Strueber, Mukelabai Mukelabai, Jacob Krueger, Stefan Fischer, Lukas Linsbauer, Jabier Martinez, and Thorsten Berger. 2019. Facing the Truth: Benchmarking the Techniques for the Evolution of Variant-Rich Systems. In SPLC.Google ScholarGoogle Scholar

Index Terms

  1. Causes of merge conflicts: a case study of ElasticSearch

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            VaMoS '20: Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems
            February 2020
            184 pages
            ISBN:9781450375016
            DOI:10.1145/3377024

            Copyright © 2020 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 6 February 2020

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate66of147submissions,45%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader