Skip to main content
Log in

An Analysis of Merge Conflicts and Resolutions in Git-Based Open Source Projects

  • Published:
Computer Supported Cooperative Work (CSCW) Aims and scope Submit manuscript

Abstract

Version control systems such as Git support parallel collaborative work and became very widespread in the open-source community. Whilst Git offers some very interesting features, resolving conflicts that arise during synchronisation of parallel changes is a time-consuming task. In this paper we present an analysis of concurrency and conflicts in official Git repository of four projects: Rails, IkiWiki, Samba and Linux Kernel. We analyse the collaboration process of these projects at specific periods revealing how change integration and conflict rates vary during project development life-cycle. We also analyse how often users decide to rollback to previous document version when the integration process generates conflicts. Finally, we discuss the mechanism adopted by Git to consider changes made on two continuous lines as conflicting.

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
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13

Similar content being viewed by others

References

  • André, Luc; Stéphane Martin; Gérald Oster; and Claudia-Lavinia Ignat (2013). Supporting adaptable granularity of changes for massive-scale collaborative editing. In: Bertino, E.; D. Georgakopoulos; M. Srivatsa; S. Nepal; and A. Vinciarelli (eds.) CollaborateCom’13. Proceedings of the 9th IEEE International Conference on Collaborative Computing: Networking, Applications and Worksharing, Austin, Texas, USA, 20 October 2013–23 October 2013. Washington: IEEE Computer Society, pp. 50–59.

  • AtomTeletype (2017). Code together in real time with Teletype for Atom. https://blog.atom.io/2017/11/15/code-together-in-real-time-with-teletype-for-atom.html. Accessed 19 March 2018.

  • Berliner, Brian (1990). CVS II: parallelizing software development. In: USENIX’90. Proceedings of the winter 1990 USENIX technical conference, Washington, D.C, USA, 22 January 1990–26 January 1990. Berkeley: USENIX Association, pp. 341–352.

  • Bird, Christian; Peter C. Rigby; Earl T. Barr; David J. Hamilton; Daniel M. German; and Prem Devanbu (2009). The promises and perils of mining git. Washington: IEEE Computer Society, pp. 1–10.

  • Bitbucket (2008). Atlassian Bitbucket. Code, Manage, Collaborate. https://bitbucket.org/product. Accessed 19 March 2018.

  • Brindescu, Caius; Mihai Codoban; Sergii Shmarkatiuk; and Danny Dig (2014). How do centralized and distributed version control systems impact software changes?. In: Jalote, P.; L. Briand; and A. van der Hoek (eds.) ICSE’14. Proceedings of the 36th international conference on software engineering, Hyderabad, India, 31 May 2014–7 June 2014. New York: ACM, pp. 322–333.

  • Brun, Yuriy; Reid Holmes; Michael D. Ernst; and David Notkin (2011). Proactive detection of collaboration conflicts. New York: ACM, pp. 168–178.

  • Brun, Yuriy; Reid Holmes; Michael D. Ernst; and David Notkin (2013). Early detection of collaboration conflicts and risks. IEEE Transactions on Software Engineering, vol. 39, no. 10, pp. 1358–1375.

    Article  Google Scholar 

  • Collins-Sussman, Ben; Brian W. Fitzpatrick; and Michael Pilato (2004). Version Control with Subversion. Sebastopol: O’Reilly & Associates.

  • Darcs (2003). Darcs. Distributed. Interactive. Smart. http://darcs.net. Accessed 19 March 2018.

  • Dewan, Prasun; and Rajesh Hegde (2007). Semi-synchronous conflict detection and resolution in asynchronous software development. In: Bannon, L. J.; I. Wagner; C. Gutwin; R. H. R. Harper; and K. Schmidt (eds.) ECSCW’07: Proceedings of the 10th European conference on computer supported cooperative work, 24 September 2007–28 September 2007, Limerick, Ireland. London: Springer, pp. 159–178.

  • Dourish, Paul; and Victoria Bellotti (1992). Awareness and coordination in shared workspaces. In: CSCW’92. Proceedings of the 1992 ACM conference on computer-supported cooperative work, Toronto, Ontario, Canada, 1 November 1992–4 November 1992. New York: ACM, pp. 107–114.

  • EffectSizeCalculator (2017). Practical meta-analysis effect size calculator. https://campbellcollaboration.org/escalc/html/EffectSizeCalculator-SMD10.php. Accessed 19 March 2018.

  • German, Daniel M.; Bram Adams; and Ahmed E. Hassan (2016). Continuously mining distributed version control systems: an empirical study of how Linux uses Git. Empirical Software Engineering, vol. 21, no. 1, pp. 260–299.

    Article  Google Scholar 

  • Git (2005). Git. Fast version control system. https://git-scm.com/. Accessed 19 March 2018.

  • GitChangesAnalyzer (2017). Python scripts for analyzing parallelism and conflicting changes in Git. https://github.com/coast-team/ParallelismAndConflictingChangesInGit. Accessed 19 March 2018.

  • GitHub (2008). GitHub. Web-based Git repository hosting service. https://github.com/. Accessed 19 March 2018.

  • Gousios, Georgios; Martin Pinzger; and Arie van Deursen (2014). An exploratory study of the pull-based software development model. In: Jalote, P.; L. Briand; and A. van der Hoek (eds.) ICSE’14. Proceedings of the 36th International Conference on Software Engineering, Hyderabad, India, 31 May 2014–7 June 2014. New York: ACM, pp. 345–355.

  • Gutwin, Carl; Reagan Penner; and Kevin Schneider (2004). Group awareness in distributed software development. In: CSCW’04. Proceedings of the 2004 ACM Conference on Computer Supported Cooperative Work, Chicago, Illinois, USA, 6 November 2004–10 November 2004. New York: ACM, pp. 72–81.

  • Ignat, Claudia-Lavinia; and Gérald Oster (2008). Awareness of concurrent changes in distributed software development. In: Meersman, R.; and Z. Tari (eds.) OTM 2008. On the Move to Meaningful Internet Systems, OTM Confederated International Conferences, CoopIS, DOA, GADA, IS, and ODBASE 2008, Monterrey, Mexico, 9 November 2008–14 November 2008, Lecture Notes in Computer Science, vol 5331. Berlin: Springer, pp. 456–464.

  • IkiWiki (2015). Ikiwiki. https://ikiwiki.info/. Accessed 19 March 2018.

  • Kasi, Bakhtiar K.; and Anita Sarma (2013). Cassandra: Proactive conflict minimization through optimized task scheduling. In: Notkin, D.; B. H. C. Cheng; and K. Pohl (eds.) ICSE’13. Proceedings of the 35th international conference on software engineering, San Francisco, CA, USA, 18 May 2013–26 May 2013. Piscataway: IEEE, pp. 732–741.

  • LinuxKernel (2015). Linux kernel. https://www.kernel.org/. Accessed 19 March 2018.

  • LinuxKernelMailingList (2017). Linux kernel mailing list archive. https://lkml.org/lkml. Accessed 19 March 2018.

  • McKee, Shane; Nicholas Nelson; Anita Sarma; and Danny Dig (2017). Software practitioner perspectives on merge conflicts and resolutions. In: ICSME’17. Proceedings of the IEEE international conference on software maintenance and evolution, Shanghai, China, 17 September 2017–22 September 2017. Washington: IEEE Computer Society, pp. 467–478.

  • Mens, Tom (2002). A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering archive, vol. 28, no. 5, pp. 449–462.

    Article  Google Scholar 

  • Mercurial (2005). Mercurial. Work easier, Work faster. https://www.mercurial-scm.org/. Accessed 19 March 2018.

  • Perry, Dewayne E.; Harvey P. Siy; and Lawrence G. Votta (2001). Parallel changes in large-scale software development: an observational case study. ACM Transactions on Software Engineering and Methodology, vol. 10, no. 3, pp. 308–337.

    Article  Google Scholar 

  • Reiher, Peter; John Heidemann; David Ratner; Greg Skinner; and Gerald J. Popek (1994). Resolving file conflicts in the Ficus file system. In: USENIX’94. Proceedings of the USENIX Summer 1994 Technical Conference, Boston, Massachusetts, USA, 6 June 1994–10 June 1994. Berkeley: USENIX Association, pp. 183–195.

  • Ruby (2015). Ruby on rails: The popular MVC framework for Ruby. http://rubyonrails.org/. Accessed 19 March 2018.

  • Samba (2015). Samba - opening windows to a wider world. https://www.samba.org/. Accessed 19 March 2018.

  • Souza, de; R. B. Cleidson; David Redmiles; and Paul Dourish (2003). Breaking the code, moving between private and public work in collaborative software development. In: GROUP’03. Proceedings of the 2003 international ACM SIGGROUP conference on Supporting group work, Sanibel Island, Florida, USA, 9 November 2003–12 November 2013. New York: ACM, pp. 105–114.

  • Souza, de; R. B. Cleidson; David Redmiles; Li-Te Cheng; David Millen; and John Patterson (2004). Sometimes you need to see through walls: A field study of application programming interfaces. In: CSCW’04. Proceedings of the 2004 ACM conference on Computer supported cooperative work, Chicago, Illinois, USA, 6 November 2004–10 November 2004. New York: ACM, pp. 63–71.

  • SpearmanRankCorrelation (2018). Spearman’s rank correlation coefficient. https://en.wikipedia.org/wiki/Spearman Accessed 19 March 2018.

  • Yu, Weihai; André Luc; and Claudia-Lavinia Ignat (2015). A CRDT supporting selective undo for collaborative text editing. In: Bessani, A.; and S. Bouchenak (eds.) DAIS’15. Proceedings of the 15th IFIP WG 6.1 International Conference on Distributed Applications and Interoperable Systems, Grenoble, France, 2 June – 4 June 2015, Vol. 9038. New York: Springer-Verlag, pp. 193–206.

  • Zimmermann, Thomas (2007). Mining workspace updates in CVS. In: MSR’07. Proceedings of the Fourth International Workshop on Mining Software Repositories, Minneapolis, Minnesota, USA, 19 May 2007–20 May 2007. Washington: IEEE Computer Society, pp. 1–11.

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Hoai Le Nguyen.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Nguyen, H.L., Ignat, CL. An Analysis of Merge Conflicts and Resolutions in Git-Based Open Source Projects. Comput Supported Coop Work 27, 741–765 (2018). https://doi.org/10.1007/s10606-018-9323-3

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10606-018-9323-3

Keywords

Navigation