ABSTRACT
Collaborative development is an essential practice for the success of most nontrivial software projects. However, merge conflicts might occur when a developer integrates, through a remote shared repository, their changes with the changes from other developers. Such conflicts may impair developers’ productivity and introduce unexpected defects. Previous empirical studies have analyzed such conflict characteristics and proposed different approaches to avoid or resolve them. However, these studies are limited to the analysis of code shared in public repositories. This way they ignore local (developer private) repository actions and, consequently, code integration scenarios that are often omitted from the history of remote shared repositories due to the use of commands such as git rebase, which rewrite Git commit history. These studies might then be examining only part of the actual code integration scenarios and conflicts. To assess that, in this paper we aim to shed light on this issue by bringing evidence from an empirical study that analyzes git command history data extracted from the local repositories of a number of developers. This way we can access hidden integration scenarios that cannot be accessed by analyzing public repository data as in GitHub based studies. We analyze 95 git reflog files from 61 different developers. Our results indicate that hidden code integration scenarios are more frequent than the visible ones. We also find higher conflict rates than previous studies. Our evidence suggests that studies that consider only remote shared repositories might loose integration conflict data by not considering the developer’s local repository actions.
- Paola Accioly, Paulo Borba, and Guilherme Cavalcanti. 2018a. Understanding Semi-Structured Merge Conflict Characteristics in Open-Source Java Projects (Journal-First Abstract). Association for Computing Machinery, New York, NY, USA, 955. https://doi.org/10.1145/3238147.3241983Google ScholarDigital Library
- Paola Accioly, Paulo Borba, and Guilherme Cavalcanti. 2018b. Understanding Semi-Structured Merge Conflict Characteristics in Open-Source Java Projects (Journal-First Abstract). Association for Computing Machinery, New York, NY, USA, 955. https://doi.org/10.1145/3238147.3241983Google ScholarDigital Library
- Paola Accioly, Paulo Borba, Léuson Silva, and Guilherme Cavalcanti. 2018c. Analyzing Conflict Predictors in Open-Source Java Projects. In Proceedings of the 15th International Conference on Mining Software Repositories (Gothenburg, Sweden) (MSR ’18). Association for Computing Machinery, New York, NY, USA, 576–586. https://doi.org/10.1145/3196398.3196437Google ScholarDigital Library
- Iftekhar Ahmed, Caius Brindescu, Umme Ayda Mannan, Carlos Jensen, and Anita Sarma. 2017. An Empirical Examination of the Relationship between Code Smells and Merge Conflicts. In Proceedings of the 11th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (Markham, Ontario, Canada) (ESEM ’17). IEEE Press, 58–67. https://doi.org/10.1109/ESEM.2017.12Google ScholarDigital Library
- Sven Apel, Olaf Leßenich, and Christian Lengauer. 2012. Structured merge with auto-tuning: balancing precision and performance. In 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering. 120–129. https://doi.org/10.1145/2351676.2351694Google ScholarDigital Library
- Sven Apel, Jörg Liebig, Benjamin Brandl, Christian Lengauer, and Christian Kästner. 2011. Semistructured merge. In Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering - SIGSOFT/FSE '11. ACM Press. https://doi.org/10.1145/2025113.2025141Google ScholarDigital Library
- Christian Bird and Thomas Zimmermann. 2012. Assessing the Value of Branches with What-If Analysis. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering (Cary, North Carolina) (FSE ’12). Association for Computing Machinery, New York, NY, USA, Article 45, 11 pages. https://doi.org/10.1145/2393596.2393648Google ScholarDigital Library
- Yuriy Brun, Reid Holmes, M.D. Ernst, and David Notkin. 2013. Early Detection of Collaboration Conflicts and Risks. Software Engineering, IEEE Transactions on 39 (10 2013), 1358–1375. https://doi.org/10.1109/TSE.2013.28Google ScholarDigital Library
- Yuriy Brun, Reid Holmes, Michael D. Ernst, and David Notkin. 2011. Proactive Detection of Collaboration Conflicts. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering(Szeged, Hungary) (ESEC/FSE ’11). Association for Computing Machinery, New York, NY, USA, 168–178. https://doi.org/10.1145/2025113.2025139Google ScholarDigital Library
- Guilherme Cavalcanti, Paola Accioly, and Paulo Borba. 2015. Assessing Semistructured Merge in Version Control Systems: A Replicated Experiment. In 2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). 1–10. https://doi.org/10.1109/ESEM.2015.7321191Google ScholarCross Ref
- Guilherme Cavalcanti, Paulo Borba, and Paola Accioly. 2017. Evaluating and Improving Semistructured Merge. Proc. ACM Program. Lang. 1, OOPSLA, Article 59 (oct 2017), 27 pages. https://doi.org/10.1145/3133883Google ScholarDigital Library
- Guilherme Cavalcanti, Paulo Borba, Georg Seibt, and Sven Apel. 2019. The Impact of Structure on Software Merging: Semistructured Versus Structured Merge. In 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE). 1002–1013. https://doi.org/10.1109/ASE.2019.00097Google ScholarDigital Library
- Scott Chacon and Ben Straub. 2014. Pro Git (2nd editioned.). Apress.Google ScholarDigital Library
- Jônatas Clementino, Paulo Borba, and Guilherme Cavalcanti. 2021. Textual Merge Based on Language-Specific Syntactic Separators. Association for Computing Machinery, New York, NY, USA, 243–252. https://doi.org/10.1145/3474624.3474646Google ScholarDigital Library
- Léuson Da Silva, Paulo Borba, and Arthur Pires. 2022. Build Conflicts in the Wild. J. Softw. Evol. Process 34, 4 (apr 2022), 28 pages. https://doi.org/10.1002/smr.2441Google ScholarDigital Library
- Gleiph Ghiotto, Leonardo Murta, Márcio Barros, and André van der Hoek. 2020. On the Nature of Merge Conflicts: A Study of 2,731 Open Source Java Projects Hosted by GitHub. IEEE Transactions on Software Engineering 46, 8 (2020), 892–915. https://doi.org/10.1109/TSE.2018.2871083Google ScholarCross Ref
- Mário Luís Guimarães and António Rito Silva. 2012. Improving Early Detection of Software Merge Conflicts. In Proceedings of the 34th International Conference on Software Engineering (Zurich, Switzerland) (ICSE ’12). IEEE Press, 342–352.Google ScholarDigital Library
- Tao Ji, Liqian Chen, Xin Yi, and Xiaoguang Mao. 2020. Understanding Merge Conflicts and Resolutions in Git Rebases. In 2020 IEEE 31st International Symposium on Software Reliability Engineering (ISSRE). 70–80. https://doi.org/10.1109/ISSRE5003.2020.00016Google ScholarCross Ref
- Bakhtiar Khan Kasi and Anita Sarma. 2013. Cassandra: Proactive Conflict Minimization through Optimized Task Scheduling. In Proceedings of the 2013 International Conference on Software Engineering (San Francisco, CA, USA) (ICSE ’13). IEEE Press, 732–741.Google ScholarDigital Library
- Hoai Le Nguyen and Claudia-Lavinia Ignat. 2017. Parallelism and conflicting changes in Git version control systems. In IWCES’17 - The Fifteenth International Workshop on Collaborative Editing Systems. Portland, Oregon, United States. https://hal.inria.fr/hal-01588482Google Scholar
- Wardah Mahmood, Moses Chagama, Thorsten Berger, and Regina Hebig. 2020. Causes of merge conflicts: a case study of ElasticSearch. 1–9. https://doi.org/10.1145/3377024.3377047Google ScholarDigital Library
- Shane McKee, Nicholas Nelson, Anita Sarma, and Danny Dig. 2017. Software Practitioner Perspectives on Merge Conflicts and Resolutions. In 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME). 467–478. https://doi.org/10.1109/ICSME.2017.53Google ScholarCross Ref
- T. Mens. 2002. A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering 28, 5 (2002), 449–462. https://doi.org/10.1109/TSE.2002.1000449Google ScholarDigital Library
- Hoai Le Nguyen and Claudia-Lavinia Ignat. 2018. An Analysis of Merge Conflicts and Resolutions in Git-Based Open Source Projects. Computer Supported Cooperative Work (CSCW) 27 (12 2018). https://doi.org/10.1007/s10606-018-9323-3Google ScholarDigital Library
- Yuichi Nishimura and Katsuhisa Maruyama. 2016. Supporting Merge Conflict Resolution by Using Fine-Grained Code Change History. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), Vol. 1. 661–664. https://doi.org/10.1109/SANER.2016.46Google ScholarCross Ref
- D.E. Perry, H.P. Siy, and L.G. Votta. 1998. Parallel changes in large scale software development: an observational case study. In Proceedings of the 20th International Conference on Software Engineering. 251–260. https://doi.org/10.1109/ICSE.1998.671134Google ScholarCross Ref
- Anita Sarma, David F. Redmiles, and André van der Hoek. 2012. Palantir: Early Detection of Development Conflicts Arising from Parallel Code Changes. IEEE Transactions on Software Engineering 38, 4 (2012), 889–908. https://doi.org/10.1109/TSE.2011.64Google ScholarDigital Library
- Todd Sedano, Paul Ralph, and Cécile Péraire. 2017. Software Development Waste. In 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE). 130–140. https://doi.org/10.1109/ICSE.2017.20Google ScholarDigital Library
- Leuson Da Silva, Paulo Borba, Wardah Mahmood, Thorsten Berger, and João Moisakis. 2020. Detecting Semantic Conflicts via Automated Behavior Change Detection. In 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME). 174–184. https://doi.org/10.1109/ICSME46990.2020.00026Google ScholarCross Ref
- Alberto Tavares, Paulo Borba, Guilherme Cavalcanti, and Sergio Soares. 2019. Semistructured Merge in JavaScript Systems. 1014–1025. https://doi.org/10.1109/ASE.2019.00098Google ScholarDigital Library
- André van der Hoek and Anita Sarma. 2008. Palantir: enhancing configuration management systems with workspace awareness to detect and resolve emerging conflicts.Google Scholar
- Thomas Zimmermann. 2007. Mining Workspace Updates in CVS. In Fourth International Workshop on Mining Software Repositories (MSR’07:ICSE Workshops 2007). 11–11. https://doi.org/10.1109/MSR.2007.22Google ScholarDigital Library
Index Terms
- The Private Life of Merge Conflicts
Recommendations
What causes merge conflicts?
SBES '20: Proceedings of the XXXIV Brazilian Symposium on Software EngineeringDuring the software development process, several developers commonly change artifacts in parallel. A merge process can combine parallel changes. In the case of changes that cannot be automatically combined, the developer responsible for the merge must ...
Factors that Affect Merge Conflicts: A Software Developers’ Perspective
SBES '21: Proceedings of the XXXV Brazilian Symposium on Software EngineeringMerge 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 ...
Understanding semi-structured merge conflict characteristics in open-source Java projects
Empirical studies show that merge conflicts frequently occur, impairing developers' productivity, since merging conflicting contributions might be a demanding and tedious task. However, the structure of changes that lead to conflicts has not been ...
Comments