On the Nature of Merge Conflicts: A Study of 2,731 Open Source Java']Java Projects Hosted by GitHub

被引:36
|
作者
Ghiotto, Gleiph [1 ,2 ]
Murta, Leonardo [1 ]
Barros, Marcio [3 ]
van der Hoek, Andre [4 ]
机构
[1] Fluminense Fed Univ, Comp Inst, BR-24220900 Niteroi, RJ, Brazil
[2] Univ Fed Juiz de Fora, Comp Sci Dept, BR-36036900 Juiz De Fora, MG, Brazil
[3] Univ Fed Estado Rio de Janeiro, Informat Syst Program, Rio de Janeiro, RJ, Brazil
[4] Univ Calif Irvine, Dept Informat, Irvine, CA 92697 USA
关键词
Tools; History; Electronic mail; !text type='Java']Java[!/text; Software; Task analysis; Software merge; merge conflict; merge resolution; CONFIGURATION MANAGEMENT; SOFTWARE;
D O I
10.1109/TSE.2018.2871083
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
When multiple developers change a software system in parallel, these concurrent changes need to be merged to all appear in the software being developed. Numerous merge techniques have been proposed to support this task, but none of them can fully automate the merge process. Indeed, it has been reported that as much as 10 to 20 percent of all merge attempts result in a merge conflict, meaning that a developer has to manually complete the merge. To date, we have little insight into the nature of these merge conflicts. What do they look like, in detail? How do developers resolve them? Do any patterns exist that might suggest new merge techniques that could reduce the manual effort? This paper contributes an in-depth study of the merge conflicts found in the histories of 2,731 open source Java projects. Seeded by the manual analysis of the histories of five projects, our automated analysis of all 2,731 projects: (1) characterizes the merge conflicts in terms of number of chunks, size, and programming language constructs involved, (2) classifies the manual resolution strategies that developers use to address these merge conflicts, and (3) analyzes the relationships between various characteristics of the merge conflicts and the chosen resolution strategies. Our results give rise to three primary recommendations for future merge techniques, that - when implemented - could on one hand help in automatically resolving certain types of conflicts and on the other hand provide the developer with tool-based assistance to more easily resolve other types of conflicts that cannot be automatically resolved.
引用
收藏
页码:892 / 915
页数:24
相关论文
共 50 条
  • [1] A Characterization Study of Merge Conflicts in Java']Java Projects
    Shen, Bowen
    Gulzar, Muhammad Ali
    He, Fei
    Meng, Na
    [J]. ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2023, 32 (02)
  • [2] AUTOMATING TEST CASE IDENTIFICATION IN JAVA']JAVA OPEN SOURCE PROJECTS ON GITHUB
    Madeja, Matej
    Poruban, Jaroslav
    Bacikova, Michaela
    Sulir, Matus
    Juhar, Jan
    Chodarev, Sergej
    Gurbal, Filip
    [J]. COMPUTING AND INFORMATICS, 2021, 40 (03) : 575 - 605
  • [3] On the Nature of Code Cloning in Open-Source Java']Java Projects
    Golubev, Yaroslav
    Bryksin, Timofey
    [J]. 2021 IEEE 15TH INTERNATIONAL WORKSHOP ON SOFTWARE CLONES, IWSC 2021, 2021, : 22 - 28
  • [4] Understanding semi-structured merge conflict characteristics in open-source Java']Java projects
    Accioly, Paola
    Borba, Paulo
    Cavalcanti, Guilherme
    [J]. EMPIRICAL SOFTWARE ENGINEERING, 2018, 23 (04) : 2051 - 2085
  • [5] On the nature of code cloning in open-source Java projects
    Golubev, Yaroslav
    Bryksin, Timofey
    [J]. arXiv, 2021,
  • [6] A Study of Potential Code Borrowing and License Violations in Java']Java Projects on GitHub
    Golubev, Yaroslav
    Eliseeva, Maria
    Povarov, Nikita
    Bryksin, Timofey
    [J]. 2020 IEEE/ACM 17TH INTERNATIONAL CONFERENCE ON MINING SOFTWARE REPOSITORIES, MSR, 2020, : 54 - 64
  • [7] On Understanding the Release Patterns of Open Source Java']Java Projects
    Kaur, Arvinder
    Vig, Vidhi
    [J]. COMPUTATIONAL INTELLIGENCE IN DATA MINING, 2019, 711 : 9 - 18
  • [8] Empirical Study on the Usage of Graph Query Languages in Open Source Java']Java Projects
    Seifer, Philipp
    Haertel, Johannes
    Leinberger, Martin
    Laemmel, Ralf
    Staab, Steffen
    [J]. PROCEEDINGS OF THE 12TH ACM SIGPLAN INTERNATIONAL CONFERENCE ON SOFTWARE LANGUAGE ENGINEERING (SLE '19), 2019, : 152 - 166
  • [9] License Usage and Changes: A Large-Scale Study of Java']Java Projects on GitHub
    Vendome, Christopher
    Linares-Vasquez, Mario
    Bavota, Gabriele
    Di Penta, Massimiliano
    German, Daniel
    Poshyvanyk, Denys
    [J]. 2015 IEEE 23RD INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION ICPC 2015, 2015, : 218 - 228
  • [10] Analyzing Conflict Predictors in Open-Source Java']Java Projects
    Accioly, Paola
    Borba, Paulo
    Silva, Leuson
    Cavalcanti, Guilherme
    [J]. 2018 IEEE/ACM 15TH INTERNATIONAL CONFERENCE ON MINING SOFTWARE REPOSITORIES (MSR), 2018, : 576 - 586