Evaluation of Version Control Merge Tools
METADATA ONLY
Loading...
Author / Producer
Date
2024
Publication Type
Conference Paper
ETH Bibliography
yes
Citations
Altmetric
METADATA ONLY
Data
Rights / License
Abstract
A version control system, such as Git, requires a way to integrate changes from different developers or branches. Given a merge scenario, a merge tool either outputs a clean integration of the changes, or it outputs a conflict for manual resolution. A clean integration is correct if it preserves intended program behavior, and is incorrect otherwise (e.g., if it causes a test failure). Manual resolution consumes valuable developer time, and correcting a defect introduced by an incorrect merge is even more costly.New merge tools have been proposed, but they have not yet been evaluated against one another. Prior evaluations do not properly distinguish between correct and incorrect merges, are not evaluated on a realistic set of merge scenarios, and/or do not compare to state-of-the-art tools. We have performed a more realistic evaluation. The results differ significantly from previous claims, setting the record straight and enabling better future research. Our novel experimental methodology combines running test suites, examining merges on deleted branches, and accounting for the cost of incorrect merges.Based on these evaluations, we created a merge tool that outperforms all previous tools under most assumptions. It handles the most common merge scenarios in practice.
Permanent link
Publication status
published
External links
Editor
Book title
ASE '24: Proceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering
Journal / series
Volume
Pages / Article No.
831 - 843
Publisher
Association for Computing Machinery
Event
39th IEEE/ACM International Conference on Automated Software Engineering (ASE 2024)
Edition / version
Methods
Software
Geographic location
Date collected
Date created
Subject
software merging; version control; structured merge; mining software repositories; git merge; Spork; IntelliMerge; git-hires-merge