In modern software development, developers rely on version control systems like Git to collaborate in the branch-based development workflow. One down side of this workflow is the conflicts occurred when merging contributions from different developers: these conflicts are tedious and error-prone to be correctly resolved, reducing the efficiency of collaboration and introducing potential bugs. The situation becomes even worse, with the popularity of refactorings in software development and evolution, because current merging tools (usually based on the text or tree structures of source code) are unaware of refactorings. In this paper, we present IntelliMerge, a graph-based refactoring-aware merging algorithm for Java programs. We explicitly enhance this algorithm’s ability in detecting and resolving refactoring-related conflicts. Through an evaluation on 1,070 merge scenarios from 10 popular open-source Java projects, we show that, IntelliMerge reduces the number of merge conflicts by 58.90% comparing with GitMerge (the prevalent unstructured merging tool) and 11.84% comparing with jFSTMerge (the state-of-the-art semi-structured merging tool) without sacrificing the auto-merging precision (88.48%) and recall (90.22%). Besides, the evaluation on performance shows that IntelliMerge takes 539 milliseconds to process one merge scenario on median, which indicates its feasibility in real-world applications.
This program is tentative and subject to change.
Fri 25 Oct
|11:00 - 11:22|
|11:22 - 11:45|
Rong PanUniversity of Texas at Austin, Qinheping HuUniversity of Wisconsin, Madison, Gaowei XuUniversity of Wisconsin Madison, Loris D'AntoniUniversity of Wisconsin MadisonPre-print
|11:45 - 12:07|
Johannes BaderFacebook, Andrew ScottFacebook, Michael PradelUniversity of Stuttgart, Satish ChandraFacebookPre-print
|12:07 - 12:30|
Bo ShenPeking University, Wei ZhangPeking University, Haiyan ZhaoPeking University, Guangtai LiangHuawei Technologies Co. Ltd, Zhi JinPeking University, Qianxiang WangHuawei Technologies Co. LtdDOI