Results 1 -
3 of
3
Semistructured Merge: Rethinking Merge in Revision Control Systems
- in Proceedings of the European Software Engineering Conference and the International Symposium on the Foundations of Software Engineering (ESEC/FSE
, 2011
"... 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 langua ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
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.
Model Management for Continuously Evolving Systems 1 Requirements and Systems-of-Systems
"... Software development today takes place in the context of a complex system-of-systems that includes a broad technological infrastructure along with a wide set of human activities. The technological systems and the human activity systems have a symbiotic relationship- each shapes the other in complex ..."
Abstract
- Add to MetaCart
Software development today takes place in the context of a complex system-of-systems that includes a broad technological infrastructure along with a wide set of human activities. The technological systems and the human activity systems have a symbiotic relationship- each shapes the other in complex ways, such that neither can be understood in isolation. A recent report from the SEI on Ultra-Large Scale (ULS) Systems accurately characterized the nature of these systems-of- systems: they have no centralized control; experience normal failures and continual evolution of heterogeneous elements; and their requirements are inherently conflicting, diverse and often unknowable. For design purposes, the boundary between people and software disappears- design is as much about shaping the human activities as it is about constructing the software. Although the SEI report focussed on the extreme scale, it is clear that most of
Merging and Renaming in Revision Control Software
, 2008
"... Modern projects often involve geographically spread people working on the same project simultaneously. Thus the contents of the project are likely to be read and edited by more people than the original authors of the content. That’s why refactoring becomes an important part of the project developmen ..."
Abstract
- Add to MetaCart
Modern projects often involve geographically spread people working on the same project simultaneously. Thus the contents of the project are likely to be read and edited by more people than the original authors of the content. That’s why refactoring becomes an important part of the project development since refactoring, amongst others, enhances the readability of the material. Since revision control systems are widely used in bigger projects, they must thus provide essential tools such as good renaming functions, which is important for refactoring, as well as good merging support which enables several developers/editors merge their work without doing much manual work. This thesis presents and discusses different merging techniques as well as different approaches to conflict detection, avoidance, and reduction. Moreover a solution to some

