Dealing with merge conflicts in version control systems is a challenging task for software developers. Resolving merge conflicts is a time-consuming and error-prone process, which distracts developers from important tasks. Recent work shows that refactorings are often involved in merge conflicts and that refactoring-related conflicts tend to be larger, making them harder to resolve. In the literature, there are two refactoring-aware merging techniques that claim to automatically resolve refactoring-related conflicts; however, these two techniques have never been empirically compared. In this paper, we present RefMerge, a Java re-implementation of the first technique, which is an operation-based refactoring-aware merging algorithm. We compare RefMerge to Git and the state-of-the-art graph-based refactoring-aware merging tool, IntelliMerge, on 2,001 merge scenarios with refactoring-related conflicts from 20 open-source projects. We find that RefMerge completely resolves 143 (7%) merge scenarios while IntelliMerge resolves only 78 (4%). We additionally conduct a qualitative analysis of the differences between the three merging algorithms and provide insights of the strengths and weaknesses of each tool.
翻译:处理版本控制系统中的合并冲突对于软件开发者来说是一项艰巨的任务。 解决合并冲突是一个耗时和容易出错的过程, 这会分散开发者对重要任务的注意力。 最近的工作显示, 重构因素往往涉及合并冲突, 重构因素相关的冲突往往更大, 使得它们更难解决。 在文献中, 有两种重构- 觉悟合并技术声称自动解决与再构因素有关的冲突; 但是, 这两种技术从未进行过经验比较。 在本文中, 我们展示了RefMegege, 一种Java 重新实施第一种技术, 这是一种基于操作的重构- 识合并算法。 我们比较了RefMeget与Git的重构因素合并法, 使得它们更难解决。 IntelliMeorge, 在 2, 001 组合假设中, 与20个开放源项目中与再构件相关的冲突。 我们发现, RefMegelge 完全解决了143 (7%) 的合并方案, 而IntellimeGe只解决了78 (4% ) 和每种弱点之间的质量分析。 我们另外将每种变数和工具加以合并。