Refactoring-Aware Patch Integration Across Structurally Divergent Java Forks
Daniel Ogenrwot, John Businge

TL;DR
This paper introduces RePatch, a refactoring-aware system for integrating bug-fix patches across structurally divergent Java forks, significantly improving success rates over traditional syntax-based methods by accounting for code transformations.
Contribution
RePatch extends the RefMerge framework to support asymmetric patch transfer, enabling effective patch integration across long-lived, structurally divergent Java variants.
Findings
RePatch successfully integrated 52.8% of previously failing patches.
Git cherry-pick fails in 64.4% of cases due to structural misalignments.
RePatch demonstrates the importance of semantic reasoning in patch propagation.
Abstract
While most forks on platforms like GitHub are short-lived and used for social collaboration, a smaller but impactful subset evolve into long-lived forks, referred to here as variants, that maintain independent development trajectories. Integrating bug-fix patches across such divergent variants poses challenges due to structural drift, including refactorings that rename, relocate, or reorganize code elements and obscure semantic correspondence. This paper presents an empirical study of patch integration failures in 14 divergent pair of variants and introduces RePatch, a refactoring-aware integration system for Java repositories. RePatch extends the RefMerge framework, originally designed for symmetric merges, by supporting asymmetric patch transfer. RePatch inverts refactorings in both the source and target to realign the patch context, applies the patch, and replays the transformations…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Advanced Software Engineering Methodologies
