Structure-oriented merging of revisions of software documents
SCM '91 Proceedings of the 3rd international workshop on Software configuration management
Software merge: semantics of combining changes to programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program integration for languages with procedure calls
ACM Transactions on Software Engineering and Methodology (TOSEM)
Version models for software configuration management
ACM Computing Surveys (CSUR)
A State-of-the-Art Survey on Software Merging
IEEE Transactions on Software Engineering
Semantic Diff: A Tool for Summarizing the Effects of Modifications
ICSM '94 Proceedings of the International Conference on Software Maintenance
Selected papers from the ICSE SCM-4 and SCM-5 Workshops, on Software Configuration Management
Mutatis mutandis: safe and predictable dynamic software updating
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Category-theoretic Approach to Syntactic Software Merging
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Impact of software engineering research on the practice of software configuration management
ACM Transactions on Software Engineering and Methodology (TOSEM)
Refactoring-Aware Configuration Management for Object-Oriented Programs
ICSE '07 Proceedings of the 29th international conference on Software Engineering
JDiff: A differencing technique and tool for object-oriented programs
Automated Software Engineering
Mining Workspace Updates in CVS
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
FEATUREHOUSE: Language-independent, automated software composition
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Making sense of revision-control systems
Communications of the ACM - The Status of the P versus NP Problem
Model Superimposition in Software Product Lines
ICMT '09 Proceedings of the 2nd International Conference on Theory and Practice of Model Transformations
Feature (De)composition in Functional Programming
SC '09 Proceedings of the 8th International Conference on Software Composition
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
Detecting Dependences and Interactions in Feature-Oriented Design
ISSRE '10 Proceedings of the 2010 IEEE 21st International Symposium on Software Reliability Engineering
Structured merge with auto-tuning: balancing precision and performance
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Diversity in software engineering research
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
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.