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.
- 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 Scholar
- 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 Scholar
- 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 Scholar
- B. Dagenais and M. P. Robillard. 2008. Recommending Adaptive Changes for Framework Evolution. In International Conference on Software Engineering. 481--490.Google Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- S. Horwitz, J. Prins, and T. Reps. 1989. Integrating Noninterfering Versions of Programs. ACM Trans. Program. Lang. Syst. 11, 3 (1989), 345--387.Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- M. Mahmoudi and S. Nadi. 2018. The Android Update Problem: An Empirical Study. In International Conference on Mining Software Repositories. 220--230.Google Scholar
- 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 Scholar
- 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 Scholar
- T. Mens. 2002. A State-of-the-Art Survey on Software Merging. IEEE Trans. Softw. Eng. 28, 5 (May 2002), 449--462.Google ScholarDigital Library
- Microsoft. 2018. Microsoft Edge: Making the web better through more open source collaboration. https://blogs.windows.com/windowsexperience/2018/12/06/.Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- L. Silva. 2019. Detecting, Understanding and Resolving Build and Test Conflicts. In International Conference on Software Engineering: Companion Proceedings. 192--193.Google Scholar
- 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 Scholar
- Z. Xing and E. Stroulia. 2007. API-Evolution Support with Diff-CatchUp. IEEE Trans. Softw. Eng. 33, 12 (Dec. 2007).Google Scholar
- 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 ScholarDigital Library
- T. Zimmermann. 2007. Mining Workspace Updates in CVS. In International Workshop on Mining Software Repositories. 11--11.Google Scholar
Recommendations
Causes of merge conflicts: a case study of ElasticSearch
VaMoS '20: Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive SystemsSoftware branching and merging allows collaborative development and creating software variants, commonly referred to as clone & own. While simple and cheap, a trade-off is the need to merge code and to resolve merge conflicts, which frequently occur in ...
Towards understanding and fixing upstream merge induced conflicts in divergent forks: an industrial case study
ICSE '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion ProceedingsDivergent 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 ...
Understanding predictive factors for merge conflicts
AbstractContext: Merge conflicts often occur when developers change the same code artifacts. Such conflicts might be frequent in practice, and resolving them might be costly and is an error-prone activity.
...
Comments