How Different Are Different diff Algorithms in Git?
arXiv:1902.02467 · doi:10.1007/s10664-019-09772-z
Abstract
Automatic identification of the differences between two versions of a file is a common and basic task in several applications of mining code repositories. Git, a version control system, has a diff utility and users can select algorithms of diff from the default algorithm Myers to the advanced Histogram algorithm. From our systematic mapping, we identified three popular applications of diff in recent studies. On the impact on code churn metrics in 14 Java projects, we obtained different values in 1.7% to 8.2% commits based on the different diff algorithms. Regarding bug-introducing change identification, we found 6.0% and 13.3% in the identified bug-fix commits had different results of bug-introducing changes from 10 Java projects. For patch application, we found that the Histogram is more suitable than Myers for providing the changes of code, from our manual analysis. Thus, we strongly recommend using the Histogram algorithm when mining Git repositories to consider differences in source code.
38 pages, Empirical Software Engineering
Cited by in corpus (8)
- Learning to Generate Corrective Patches using Neural Machine Translation
- Science-Software Linkage: The Challenges of Traceability between Scientific Knowledge and Software Artifacts
- Bridging the Gap: A Comparative Study of Academic and Developer Approaches to Smart Contract Vulnerabilities
- Evaluating the Performance of Clone Detection Tools in Detecting Cloned Co-change Candidates
- An empirical study of Linespots: A novel past-fault algorithm
- Is Kernel Code Different From Non-Kernel Code? A Case Study of BSD Family Operating Systems
- Evaluation of Version Control Merge Tools
- Toward Interactive Optimization of Source Code Differences: An Empirical Study of Its Performance