skip to main content
10.1145/3377813.3381362acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Towards understanding and fixing upstream merge induced conflicts in divergent forks: an industrial case study

Published:18 September 2020Publication History

ABSTRACT

Divergent forks are a common practice in open-source software development to perform long-term, independent and diverging development on top of a popular source repository. However, keeping such divergent downstream forks in sync with the upstream source evolution poses engineering challenges in terms of frequent merge conflicts. In this paper, we conduct the first industrial case study of the implications of frequent merges from upstream and the resulting merge conflicts, in the context of Microsoft Edge development. The study consists of two parts. First, we describe the nature of merge conflicts that arise due to merges from upstream and classify them into textual conflicts, build breaks, and test failures. Second, we investigate the feasibility of automatically fixing a class of merge conflicts related to build breaks that consume a significant amount of developer time to root-cause and fix. Towards this end, we have implemented a tool MrgBldBrkFixer and evaluate it on three months of real Microsoft Edge Beta development data, and report encouraging results.

References

  1. S. Apel, J. Liebig, B. Brandl, C. Lengauer, and C. Kästner. 2011. Semistructured Merge: Rethinking Merge in Revision Control Systems. In ACM SIGSOFT Symposium on Foundations of Software Engineering. 190--200.Google ScholarGoogle Scholar
  2. Y. Brun, R. Holmes, M. D. Ernst, and D. Notkin. 2011. Proactive Detection of Collaboration Conflicts. In ACM SIGSOFT Symposium on Foundations of Software Engineering. 168--178.Google ScholarGoogle Scholar
  3. M. L. Collard and J. I. Maletic. 2016. srcML 1.0: Explore, Analyze, and Manipulate Source Code. In IEEE International Conference on Software Maintenance and Evolution. 649--649.Google ScholarGoogle Scholar
  4. B. Dagenais and M. P. Robillard. 2008. Recommending Adaptive Changes for Framework Evolution. In International Conference on Software Engineering. 481--490.Google ScholarGoogle Scholar
  5. G. de la Torre, R. Robbes, and A. Bergel. 2018. Imprecisions Diagnostic in Source Code Deltas. In 2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR). 492--502.Google ScholarGoogle Scholar
  6. C. R. B. de Souza, D. Redmiles, and P. Dourish. 2003. "Breaking the Code", Moving Between Private and Public Work in Collaborative Software Development. In International ACM SIGGROUP Conference on Supporting Group Work. 105--114.Google ScholarGoogle Scholar
  7. J. Falleri, F. Morandat, X. Blanc, M. Martinez, and M. Monperrus. 2014. Fine-grained and accurate source code differencing. In IEEE/ACM International Conference On Automated Software Engineering. 313--324.Google ScholarGoogle Scholar
  8. M. L. Guimarães and A. R. Silva. 2012. Improving Early Detection of Software Merge Conflicts. In International Conference on Software Engineering. 342--352.Google ScholarGoogle Scholar
  9. S. Horwitz, J. Prins, and T. Reps. 1989. Integrating Noninterfering Versions of Programs. ACM Trans. Program. Lang. Syst. 11, 3 (1989), 345--387.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. O. Leßenich, S. Apel, and C. Lengauer. 2015. Balancing precision and performance in structured merge. Automated Software Engineering 22, 3 (2015), 367--397.Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. Linares-Vásquez, G. Bavota, C. Bernal-Cárdenas, M. Di Penta, R. Oliveto, and D. Poshyvanyk. 2013. API Change and Fault Proneness: A Threat to the Success of Android Apps. In ACM SIGSOFT Symposium on Foundations of Software Engineering. 477--487.Google ScholarGoogle Scholar
  12. M. Mahmoudi and S. Nadi. 2018. The Android Update Problem: An Empirical Study. In International Conference on Mining Software Repositories. 220--230.Google ScholarGoogle Scholar
  13. T. McDonnell, B. Ray, and M. Kim. 2013. An Empirical Study of API Stability and Adoption in the Android Ecosystem. In IEEE International Conference on Software Maintenance. 70--79.Google ScholarGoogle Scholar
  14. N. Meng, M. Kim, and K. S. McKinley. 2011. Systematic editing: generating program transformations from an example. In ACM SIGPLAN Conference on Programming Language Design and Implementation. 329--342.Google ScholarGoogle Scholar
  15. T. Mens. 2002. A State-of-the-Art Survey on Software Merging. IEEE Trans. Softw. Eng. 28, 5 (May 2002), 449--462.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Microsoft. 2018. Microsoft Edge: Making the web better through more open source collaboration. https://blogs.windows.com/windowsexperience/2018/12/06/.Google ScholarGoogle Scholar
  17. H. V. Nguyen, M. H. Nguyen, S. C. Dang, C. Kästner, and T. N Nguyen. 2015. Detecting semantic merge conflicts with variability-aware execution. In ACM SIGSOFT Symposium on Foundations of Software Engineering. 926--929.Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Y. Padioleau, R. R. Hansen, J. L Lawall, and G. Muller. 2006. Semantic patches for documenting and automating collateral evolutions in Linux device drivers. In Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems. 10--es.Google ScholarGoogle Scholar
  19. D. E. Perry, H. P. Siy, and L. G. Votta. 2001. Parallel Changes in Large-scale Software Development: An Observational Case Study. ACM Trans. Softw. Eng. Methodol. 10, 3 (July 2001).Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. R. Rolim, G. Soares, L. D'Antoni, O. Polozov, S. Gulwani, R. Gheyi, R. Suzuki, and B. Hartmann. 2017. Learning Syntactic Program Transformations from Examples. In International Conference on Software Engineering. 404--415.Google ScholarGoogle Scholar
  21. D. Shao, S. Khurshid, and D. E Perry. 2009. SCA: a semantic conflict analyzer for parallel changes. In Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering. ACM, 291--292.Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. L. Silva. 2019. Detecting, Understanding and Resolving Build and Test Conflicts. In International Conference on Software Engineering: Companion Proceedings. 192--193.Google ScholarGoogle Scholar
  23. M. Sousa, I. Dillig, and S. K. Lahiri. 2018. Verified Three-way Program Merge. Proc. ACM Program. Lang. 2 (2018), 165:1--165:29.Google ScholarGoogle Scholar
  24. Z. Xing and E. Stroulia. 2007. API-Evolution Support with Diff-CatchUp. IEEE Trans. Softw. Eng. 33, 12 (Dec. 2007).Google ScholarGoogle Scholar
  25. W. Yang, S. Horwitz, and T. Reps. 1992. A Program Integration Algorithm That Accommodates Semantics-preserving Transformations. ACM Trans. Softw. Eng. Methodol. 1, 3 (1992), 310--354.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. T. Zimmermann. 2007. Mining Workspace Updates in CVS. In International Workshop on Mining Software Repositories. 11--11.Google ScholarGoogle Scholar

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 Conferences
    ICSE-SEIP '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice
    June 2020
    258 pages
    ISBN:9781450371230
    DOI:10.1145/3377813

    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 ACM 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: 18 September 2020

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

    Upcoming Conference

    ICSE 2025

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader