skip to main content
10.1145/3555228.3555240acmotherconferencesArticle/Chapter ViewAbstractPublication PagessbesConference Proceedingsconference-collections
research-article

The Private Life of Merge Conflicts

Published: 05 October 2022 Publication History

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.

References

[1]
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.3241983
[2]
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.3241983
[3]
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.3196437
[4]
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.12
[5]
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.2351694
[6]
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.2025141
[7]
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.2393648
[8]
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.28
[9]
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.2025139
[10]
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.7321191
[11]
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/3133883
[12]
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.00097
[13]
Scott Chacon and Ben Straub. 2014. Pro Git (2nd editioned.). Apress.
[14]
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.3474646
[15]
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.2441
[16]
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.2871083
[17]
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.
[18]
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.00016
[19]
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.
[20]
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-01588482
[21]
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.3377047
[22]
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.53
[23]
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.1000449
[24]
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-3
[25]
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.46
[26]
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.671134
[27]
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.64
[28]
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.20
[29]
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.00026
[30]
Alberto Tavares, Paulo Borba, Guilherme Cavalcanti, and Sergio Soares. 2019. Semistructured Merge in JavaScript Systems. 1014–1025. https://doi.org/10.1109/ASE.2019.00098
[31]
André van der Hoek and Anita Sarma. 2008. Palantir: enhancing configuration management systems with workspace awareness to detect and resolve emerging conflicts.
[32]
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.22

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
SBES '22: Proceedings of the XXXVI Brazilian Symposium on Software Engineering
October 2022
457 pages
ISBN:9781450397353
DOI:10.1145/3555228
Publication rights licensed to ACM. ACM acknowledges that this contribution was authored or co-authored by an employee, contractor or affiliate of a national government. As such, the Government retains a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 05 October 2022

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. collaborative software development
  2. empirical software engineering
  3. merge conflicts
  4. repository mining

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

Conference

SBES 2022
SBES 2022: XXXVI Brazilian Symposium on Software Engineering
October 5 - 7, 2022
Virtual Event, Brazil

Acceptance Rates

Overall Acceptance Rate 147 of 427 submissions, 34%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 52
    Total Downloads
  • Downloads (Last 12 months)14
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Feb 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media