Skip to main content

Advertisement

Log in

The life-cycle of merge conflicts: processes, barriers, and strategies

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

Merge conflicts occur when developers make concurrent changes to the same part of the code. They are an inevitable and disruptive aspect of collaborative software development. Thus tool builders and researchers have focused on the prevention and automatic resolution of merge conflicts. However, there is little empirical knowledge about how developers actually monitor for merge conflicts and plan, perform, and evaluate resolutions. Without such knowledge, tool builders might be building on the wrong assumptions and researchers might miss opportunities for improving the state of the art. We conducted semi-structured interviews with 10 software developers across 7 organizations, including both open-source and commercial projects. We identify key processes, techniques, and perceptions from developers, which we extend and validate via two surveys, a Barriers Survey and a Processes Survey, of 162 and 102 developers, respectively. Among others, we find that developers rely on reactive strategies of monitoring for merge conflicts. We find that developers defer responding to conflicts based on their perception of the complexity of the conflicting code and that deferring affects the workflow of the entire team. Developers also rely on this perception to visually evaluate their merge conflict resolutions for correctness. Finally, developers’ perceptions alter the impact of tools and processes designed to preemptively and efficiently resolve merge conflicts. Understanding their processes and perceptions can help design human-oriented tools that better support their individual development processes.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3

Similar content being viewed by others

Notes

  1. Companion site: http://web.engr.oregonstate.edu/~nelsonni/emse18.html

  2. https://insights.stackoverflow.com/survey/2018

References

  • Accioly P, Borba P, Cavalcanti G (2018a) Understanding semi-structured merge conflict characteristics in open-source Java projects. Empir Softw Eng 23(4):2051–2085

    Article  Google Scholar 

  • Accioly P, Borba P, Silva L, Cavalcanti G (2018b) Analyzing conflict predictors in open-source Java projects. In: Proceedings of the 15th international conference on mining software repositories (MSR). ACM, pp 576–586

  • Apel S, Liebig J, Brandl B, Lengauer C, Kästner C (2011) Semistructured merge: rethinking merge in revision control systems. In: Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on foundations of software engineering (ESEC/FSE). ACM, pp 190–200

  • Apel S, Lessenich O, Lengauer C (2012) Structured merge with auto-tuning: balancing precision and performance. In: Proceedings of the 27th IEEE/ACM international conference on automated software engineering (ASE). ACM, pp 120–129

  • Beecham S, Hall T, Rainer A (2003) Software process improvement problems in twelve software companies: an empirical analysis. Empir Softw Eng 8(1):7–42

    Article  Google Scholar 

  • Begole JB, Tang JC, Smith RB, Yankelovich N (2002) Work rhythms: analyzing visualizations of awareness histories of distributed groups. In: Proceedings of the 2002 ACM conference on computer supported cooperative work (CSCW). ACM, pp 334–343

  • Beizer B (1984) Software system testing and quality assurance. Van Nostrand Reinhold Co.

  • Biehl JT, Czerwinski M, Smith G, Robertson GG (2007) FASTDash: a visual dashboard for fostering awareness in software teams. In: Proceedings of the SIGCHI conference on human factors in computing systems (CHI). ACM, pp 1313–1322

  • Binkley D, Horwitz S, Reps T (1995) Program integration for languages with procedure calls. ACM Trans Softw Eng Methodol (TOSEM) 4(1):3–35

    Article  Google Scholar 

  • Bird C, Zimmermann T (2012) Assessing the value of branches with what-if analysis. In: International symposium on the foundations of software engineering (FSE), p 45

  • Blackwell A, Burnett M (2002) Applying attention investment to end-user programming. In: Symposia on human-centric computing languages and environments (HCC), pp 28–30

  • Borg M, Alėgroth E, Runeson P, 2017 Software engineers’ information seeking behavior in change impact analysis: an interview study. In: The 25th IEEE international conference on program comprehension (ICPC). IEEE, pp 12–22

  • Bradley AW, Murphy GC (2011) Supporting software history exploration. In: Working conference on mining software repositories (MSR), pp 193–202

  • Brindescu C, Codoban M, Shmarkatiuk S, Dig D (2014) How do centralized and distributed version control systems impact software changes? In: Proceedings of the 36th international conference on software engineering (ICSE). ACM, pp 322–333

  • Brooks FP (1974) Mythical man-month. Datamation 20(12):44–52

    Google Scholar 

  • Brun Y, Holmes R, Ernst MD, Notkin D (2011) Proactive detection of collaboration conflicts. In: International symposium and European conference on foundations of software engineering (ESEC/FSE), pp 168–178

  • Campbell JL, Quincy C, Osserman J, Pedersen OK (2013) Coding in-depth semistructured interviews: Problems of unitization and intercoder reliability and agreement. Sociol Methods Res 42(3):294–320

    Article  MathSciNet  Google Scholar 

  • Cataldo M, Herbsleb JD (2008) Communication networks in geographically distributed software development. In: ACM Conference on computer supported cooperative work & social computing (CSCW), pp 579–588

  • Codoban M, Ragavan SS, Dig D, Bailey B (2015) Software history under the lens: a study on why and how developers examine it. In: International conference on software maintenance and evolution (ICSME), pp 1–10

  • Convertino G, Chen J, Yost B, Ryu YS, North C (2003) Exploring context switching and cognition in dual-view coordinated visualizations. In: International conference on coordinated and multiple views in exploratory visualization (CMV), pp 55–62

  • Cortés-Coy LF, Vásquez ML, Aponte J, Poshyvanyk D (2014) On automatically generating commit messages via summarization of source code changes. In: International working conference on source code analysis and manipulation (SCAM), pp 275–284

  • Costa C, Figueiredo J, Murta L, Sarma A (2016) TIPMerge: recommending experts for integrating changes across branches. In: International symposium on foundations of software engineering (FSE), pp 523– 534

  • Czerwinski M, Horvitz E, Wilhite S (2004) A diary study of task switching and interruptions. In: SIGCHI conference on human factors in computing systems (CHI), pp 175–182

  • da Silva IA, Chen PH, Van der Westhuizen C, Ripley RM, van der Hoek A (2006) Lighthouse: coordination through emerging design. In: Proceedings of the 2006 OOPSLA workshop on eclipse technology eXchange. ACM, pp 11–15

  • da Silva JR, Clua E, Murta L, Sarma A (2015) Niche vs. breadth: calculating expertise over time through a fine-grained analysis. In: International conference on software analysis, evolution and reengineering (SANER), pp 409–418

  • de Mello RM, Travassos GH (2016) Surveys in software engineering: identifying representative samples. In: Proceedings of the 10th ACM/IEEE international symposium on empirical software engineering and measurement, ESEM ’16. ACM, pp 55:1–55:6

  • de Souza CR, Redmiles D, Dourish P (2003) Breaking the code, moving between private and public work in collaborative software development. In: International conference on supporting group work (GROUP), pp 105–114

  • de Souza CRB, Redmiles DF (2008) An empirical study of software developers’ management of dependencies and changes. In: International conference on software engineering (ICSE), pp 241–250

  • Dig D, Manzoor K, Johnson RE, Nguyen TN (2008) Effective software merging in the presence of object-oriented refactorings. IEEE Trans Softw Eng (TSE) 34(3):321–335

    Article  Google Scholar 

  • Easterbrook S, Singer J, Storey MA, Damian D (2008) Selecting empirical methods for software engineering research. In: Guide to advanced empirical software engineering. Springer, pp 285–311

  • Estler HC, Nordio M, Furia CA, Meyer B (2013) Unifying configuration management with merge conflict detection and awareness systems. In: Proceedings of the 22nd Australian software engineering conference (ASWEC), pp 201–210

  • Estler HC, Nordio M, Furia CA, Meyer B (2014) Awareness and merge conflicts in distributed software development. In: International conference on global software engineering (ICGSE), pp 26–35

  • Fenton NE, Ohlsson N (2000) Quantitative analysis of faults and failures in a complex software system. IEEE Trans Softw Eng (TSE) 26(8):797–814

    Article  Google Scholar 

  • Fereday J, Muir-Cochrane E (2006) Demonstrating rigor using thematic analysis: a hybrid approach of inductive and deductive coding and theme development. Int J Qualitat Methods 5(1):80–92

    Article  Google Scholar 

  • Forward A, Lethbridge TC (2002) The relevance of software documentation, tools and technologies: a survey. In: ACM symposium on document engineering (DocEng), pp 26–33

  • Fritz T, Murphy GC (2010) Using information fragments to answer the questions developers ask. In: International conference on software engineering (ICSE), pp 175–184

  • Fusch PI, Ness LR (2015) Are we there yet? Sata saturation in qualitative research. Qual Rep 20(9):1408

    Google Scholar 

  • Garmus D, Herron D (2001) Function point analysis: measurement practices for successful software projects. Addison-Wesley Longman Publishing Co

  • Garrison DR, Cleveland-Innes M, Koole M, Kappelman J (2006) Revisiting methodological issues in transcript analysis: negotiated coding and reliability. Internet High Educ 9(1):1–8

    Article  Google Scholar 

  • Gil Y, Lalouche G (2017) On the correlation between size and metric validity. Empir Softw Eng 22(5):2585–2611

    Article  Google Scholar 

  • Gligoric M, Eloussi L, Marinov D (2015) Practical regression test selection with dynamic file dependencies. In: Proceedings of the 2015 international symposium on software testing and analysis, ACM, pp 211– 222

  • Goodman LA (1961) Snowball sampling. Ann Math Statist, 148–170

  • Gopher D, Armony L, Greenshpan Y (2000) Switching tasks and attention policies. J Exp Psychol Gen 129(3):308

    Article  Google Scholar 

  • Gousios G, Zaidman A, Storey MA, van Deursen A (2015) Work practices and challenges in pull-based development: the integrator’s perspective. In: International conference on software engineering (ICSE), pp 358–368

  • Gousios G, Storey MA, Bacchelli A (2016) Work practices and challenges in pull-based development: the contributor’s perspective. In: Proceedings of the 38th international conference on software engineering (ICSE). ACM, pp 285–296

  • Grinter RE (1995) Using a configuration management tool to coordinate software development. In: Proceedings of conference on organizational computing systems. ACM, pp 168–177

  • Guimarães ML, Silva AR (2012) Improving early detection of software merge conflicts. In: International conference on software engineering (ICSE), pp 342–352

  • Guo J, Rahimi M, Cleland-Huang J, Rasin A, Hayes JH, Vierhauser M (2016) Cold-start software analytics. In: International conference on mining software repositories (MSR), pp 142–153

  • Guzzi A, Bacchelli A, Riche Y, van Deursen A (2015) Supporting developers’ coordination in the IDE. In: Computer supported cooperative work & social computing (CSCW), pp 518–532

  • Hattori LP, Lanza M (2008) On the nature of commits. In: International workshop on automated engineering of autonomous and run-time evolving systems (ARAMIS). ASE Workshops, pp 63–71

  • Hattori L, Lanza M (2010) Syde: a tool for collaborative software development. In: International conference on software engineering (ICSE), pp 235–238

  • Hindle A, German DM, Godfrey MW, Holt RC (2009) Automatic classification of large changes into maintenance categories. In: International conference on program comprehension (ICPC), pp 30–39

  • Hudson W (2013) Card sorting. In: The encyclopedia of human-computer interaction. Interaction Design Foundation

  • Hunt JJ, Tichy WF (2002) Extensible language-aware merging. In: International conference on software maintenance (ICSM), pp 511–520

  • Kasi BK, Sarma A (2013) Cassandra: proactive conflict minimization through optimized task scheduling. In: International conference on software engineering (ICSE), pp 732–741

  • Ko AJ, DeLine R, Venolia G (2007) Information needs in collocated software development teams. In: International conference on software engineering (ICSE), pp 344–353

  • Li C, Ding C, Shen K (2007) Quantifying the cost of context switch. In: Workshop on experimental computer science (ExpCS). FCRC Workshop, p 2

  • Lippe E, van Oosterom N (1992) Operation-based merging. In: Proceedings of the fifth ACM SIGSOFT symposium on software development environments (SDE). ACM, pp 78–87

  • McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng (TSE) 4:308–320

    Article  MathSciNet  Google Scholar 

  • McKee S, Nelson N, Sarma A, Dig D (2017) Software practitioner perspectives on merge conflicts and resolutions. In: 2017 IEEE international conference on software maintenance and evolution (ICSME). IEEE, pp 467–478

  • Meiran N (2000) Modeling cognitive control in task-switching. Psychol Res 63(3):234–249

    Article  Google Scholar 

  • Mens T (2002) A state-of-the-art survey on software merging. IEEE Trans Softw Eng (TSE) 28(5):449– 462

    Article  Google Scholar 

  • Meyer M (2014) Continuous integration and its tools. IEEE Softw 31(3):14–16

    Article  Google Scholar 

  • Nabi T, Sweeney KM, Lichlyter S, Piorkowski D, Scaffidi C, Burnett M, Fleming SD (2016) Putting information foraging theory to work: community-based design patterns for programming tools. In: Symposium on visual languages and human-centric computing (VL/HCC), pp 129–133

  • Nishimura Y, Maruyama K (2016) Supporting merge conflict resolution by using fine-grained code change history. In: International conference on software analysis, evolution, and reengineering (SANER), pp 661–664

  • Panichella S, Canfora G, Di Penta M, Oliveto R (2014) How the evolution of emerging collaborations relates to code changes: an empirical study. In: Proceedings of the 22nd IEEE international conference on program comprehension (ICPC). ACM, pp 177–188

  • Phillips S, Sillito J, Walker R (2011) Branching and merging: an investigation into current version control practices. In: International workshop on cooperative and human aspects of software engineering (CHASE), pp 9–15

  • Ragavan SS, Pandya B, Piorkowski D, Hill C, Kuttal SK, Sarma A, Burnett M (2017) PFIS-V: modeling foraging behavior in the presence of variants. In: Proceedings of the 2017 SIGCHI conference on human factors in computing systems (CHI). ACM, pp 6232–6244

  • Ritchie J, Lewis J, Nicholls CM, Ormston R, et al. (2013), Qualitative research practice: a guide for social science students and researchers. Sage

  • Robillard MP, Manggala P (2008) Reusing program investigation knowledge for code understanding. In: The 16th IEEE international conference on program comprehension (ICPC). IEEE, pp 202–211

  • Sarma A (2008) Palantir: enhancing configuration management systems with workspace awareness to detect and resolve emerging conflicts. PhD thesis, University of California, Irvine

  • Sarma A, Noroozi Z, Van Der Hoek A (2003) Palantír: raising awareness among configuration management workspaces. In: Proceedings of the 25th international conference on software engineering (ICSE). IEEE, pp 444–454

  • Sarma A, Bortis G, Van Der Hoek A (2007) Towards supporting awareness of indirect conflicts across software configuration management workspaces. In: Proceedings of the twenty-second IEEE/ACM international conference on automated software engineering. ACM, pp 94–103

  • Seaman CB (2008) Qualitative methods. In: Guide to advanced empirical software engineering. Springer, pp 35–62

  • Servant F, Jones JA, van der Hoek A (2010) CASI: preventing indirect conflicts through a live visualization. In: Proceedings of the 2010 ICSE workshop on cooperative and human aspects of software engineering (CHASE). ACM, pp 39–46

  • Sillito J, Murphy GC, De Volder K (2006) Questions programmers ask during software evolution tasks. In: International symposium on foundations of software engineering (FSE), pp 23–34

  • Spencer D (2009) Card sorting: designing usable categories. Rosenfeld Media

  • Sun X, Li B, Li Y, Chen Y (2015) What information in software historical repositories do we need to support software maintenance tasks? An approach based on topic model. Springer, pp 27–37

  • Symons CR (1988) Function point analysis: difficulties and improvements. IEEE Trans Softw Eng (TSE) 14(1):2–11

    Article  Google Scholar 

  • Tao Y, Dang Y, Xie T, Zhang D, Kim S (2012) How do software engineers understand code changes? An exploratory study in industry. In: International symposium on the foundations of software engineering (FSE), p 51

  • Tian J (2005) Software quality engineering, testing, quality assurance, and quantifiable improvement. Wiley

  • Wang S, Lo D (2014) Version history, similar report, and structure: putting them together for improved bug localization. In: The 22nd IEEE international conference on program comprehension (ICPC). ACM, pp 53–63

  • Weinberg GM (1992) Quality software management, vol. 1: systems thinking. Dorset House Publishing Co.

  • Westfechtel B (1991) Structure-oriented merging of revisions of software documents. In: Proceedings of the 3rd international workshop on software configuration management (SCM). ACM, pp 68–79

  • Yamauchi K, Yang J, Hotta K, Higo Y, Kusumoto S (2014) Clustering commits for understanding the intents of implementation. In: International conference on software maintenance and evolution (ICSME), pp 406–410

  • Yan Y, Menarini M, Griswold W (2014) Mining software contracts for software evolution. In: International conference on software maintenance and evolution (ICSME), pp 471–475

Download references

Acknowledgments

We thank Iftekhar Ahmed, Amin Alipour, Souti Chattopadhyay, Alex Hoffer, Michael Hilton, Sarah Nadi, Sruti Ragavan, and the anonymous reviewers for their valuable comments on earlier versions of this paper. We also thank all of our interview and survey participants, especially those who helped distribute survey links. This research was partially supported by NSF grants CCF-1439957, CCF-1553741, CCF-1560526, and IIS-1559657.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Nicholas Nelson.

Additional information

Communicated by: Lu Zhang, Thomas Zimmermann, Xin Peng and Hong Mei

Publisher’s note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Nelson, N., Brindescu, C., McKee, S. et al. The life-cycle of merge conflicts: processes, barriers, and strategies. Empir Software Eng 24, 2863–2906 (2019). https://doi.org/10.1007/s10664-018-9674-x

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-018-9674-x

Keywords

Navigation