Spork: Structured Merge for Java with Formatting Preservation

@article{Larsn2022SporkSM,
  title={Spork: Structured Merge for Java with Formatting Preservation},
  author={Simon Lars{\'e}n and Jean-R{\'e}my Falleri and Beno{\^i}t Baudry and Monperrus Martin},
  journal={ArXiv},
  year={2022},
  volume={abs/2202.05329}
}
The highly parallel workflows of modern software development have made merging of source code a common activity for developers. The state of the practice is based on line-based merge, which is ubiquitously used with “git merge”. Line-based merge is however a generalized technique for any text that cannot leverage the structured nature of source code, making merge conflicts a common occurrence. As a remedy, research has proposed structured merge tools, which typically operate on abstract syntax… 

References

SHOWING 1-10 OF 56 REFERENCES

IntelliMerge: a refactoring-aware software merging technique

TLDR
This paper presents IntelliMerge, a graph-based refactoring-aware merging algorithm for Java programs that explicitly enhance this algorithm's ability in detecting and resolving refactororing-related conflicts.

Renaming and shifted code in structured merging: Looking ahead for precision and performance

TLDR
A syntax-aware, heuristic optimization for structured merging that employs a lookahead mechanism during tree matching that can significantly improve matching precision in 28 percent of cases while maintaining performance.

Balancing precision and performance in structured merge

TLDR
This work proposes a structured-merge approach with auto-tuning, which tuning the merge process on-line by switching between unstructured and structured merge, depending on the presence of conflicts, and implemented a corresponding merge tool for Java.

Structured merge with auto-tuning: balancing precision and performance

TLDR
This work proposes a structured-merge approach with auto-tuning, which aims to tune the merge process on-line by switching between unstructured and structured merge, depending on the presence of conflicts, and implemented a corresponding merge tool for Java.

Understanding semi-structured merge conflict characteristics in open-source Java projects

TLDR
A catalog of conflict patterns expressed in terms of the structure of code changes that lead to merge conflicts is derived, focusing on conflicts reported by a semistructured merge tool that exploits knowledge about the underlying syntax of the artifacts.

Adjustable Syntactic Merge of Java Programs

TLDR
The first part of this thesis introduces the topic of merging and one of its main application areas, version control systems, and presents JDime, an adjustable, syntactic merge tool for Java programs.

The Impact of Structure on Software Merging: Semistructured Versus Structured Merge

TLDR
This study compares semistructured and structured merge in an empirical study by reproducing more than 40,000 merge scenarios from more than 500 projects to assess how often the two merge strategies report different results, and identifies conflicts incorrectly reported by one but not by the other (false positives, false negatives).

A State-of-the-Art Survey on Software Merging

  • T. Mens
  • Computer Science
    IEEE Trans. Software Eng.
  • 2002
TLDR
A comprehensive survey and analysis of available merge approaches is provided and a number of important open problems and future research directions are suggested.

On the Nature of Merge Conflicts: A Study of 2,731 Open Source Java Projects Hosted by GitHub

TLDR
An in-depth study of the merge conflicts found in the histories of 2,731 open source Java projects gives rise to three primary recommendations for future merge techniques, that could on one hand help in automatically resolving certain types of conflicts and on the other hand provide the developer with tool-based assistance to more easily resolve other types of conflict.

Indicators for merge conflicts in the wild: survey and empirical study

TLDR
A prediction of merge costs based on lightweight indicators would be desirable to help developers recognize problematic merging scenarios before potential conflicts become too severe in the evolution of a complex software project.
...