Apel, Sven;
Liebig, Jörg;
Kästner, Christian;
Brandl, Benjamin;
Lengauer, Christian:
Semistructured Merge: Rethinking Merge in
Revision Control Systems;
p.x
in:
Proc. 13th European Software Engineering
Conference and 19th ACM SIGSOFT Symposium on the
Foundations of Software Engineering, Sept. 5-9, 2011,
Szeged, Hungary;
ACM;
2011
Download: Volltext
Library Entries:
DOI 10.1145/2025113.2025141,
ACM Digital Library
Deskriptoren: CVSM,
source code:merging
Abstract: 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.