2011 · 109 citations · 18 references
ComputingComputer ScienceConflict ResolutionKnowledge RepresentationProgramming LanguagesAbstract Syntax TreesClash DetectionVersion ControlVersion Control SystemsConflict DetectionMergeMerge Conflict DetectionSemantic Clash DetectionSemantic Textual Similarity
An ongoing problem in revision control systems is how to resolve conflicts in a merge of independently developed revisions. Unstructured revision control systems are purely text-based and solve conflicts based on textual similarity. Structured revision control systems are tailored to specific languages and use language-specific knowledge for conflict resolution. We propose semistructured revision control systems that inherit the strengths of both: the generality of unstructured systems and the expressiveness of structured systems. The idea is to provide structural information of the underlying software artifacts --- declaratively, in the form of annotated grammars. This way, a wide variety of languages can be supported and the information provided can assist in the automatic resolution of two classes of conflicts: ordering conflicts and semantic conflicts. The former can be resolved independently of the language and the latter using specific conflict handlers. We have been developing a tool that supports semistructured merge and conducted an empirical study on 24 software projects developed in Java, C#, and Python comprising 180 merge scenarios. We found that semistructured merge reduces the number of conflicts in 60% of the sample merge scenarios by, on average, 34%, compared to unstructured merge. We found also that renaming is challenging in that it can increase the number of conflicts during semistructured merge, and that a combination of unstructured and semistructured merge is a pragmatic way to go.
18
A state-of-the-art survey on software merging
Tom Mens · IEEE Transactions on Software Engineering · 2002 · 529 citations
Semantic Diff: a tool for summarizing the effects of modifications