Jump to: navigation, search

Difference between revisions of "EMF DiffMerge"

Line 3: Line 3:
 
Merging models is a common need in model-based activities, not only for version control but for model manipulation in general. However, merging models is much more complex than merging source code. Since EMF models are rich data structures with constraints and behavior, merging them consistently is a delicate problem.  
 
Merging models is a common need in model-based activities, not only for version control but for model manipulation in general. However, merging models is much more complex than merging source code. Since EMF models are rich data structures with constraints and behavior, merging them consistently is a delicate problem.  
  
EMF Diff/Merge aims to help solve that problem. The scope of EMF Diff/Merge covers:  
+
EMF Diff/Merge aims to help solve that problem. The tool is intended to satisfy the following requirements:  
  
*A lightweight, configurable engine for comparing and merging EMF models in 2-way and 3-way (with common ancestor) configurations.  
+
*The consistency of the model being merged must be preserved whenever possible, by automatically merging interdependent differences together.
*Matching of model elements by ID, where an ID can be any "signature" that uniquely identifies the element within its scope: Ecore ID, XML ID, qualified name, location in model tree, etc.  
+
*The order in which differences are merged must have no impact.
*A simple GUI with reusable UI components.
+
*The tool must scale to large models.<br>
  
The tool is intended to satisfy the following requirements:  
+
The scope of EMF Diff/Merge covers:
  
*It must support the comparison and merge of large models (scalability, reliability).  
+
*A lightweight, configurable engine for comparing and merging EMF models in 2-way and 3-way (with common ancestor) configurations.
*The order in which differences are merged must have no impact.
+
*Matching of model elements by ID, where an ID can be any "signature" that uniquely identifies the element within its scope: Ecore ID, XML ID, qualified name, location in model tree, etc.
*The consistency of the model being merged must be preserved whenever possible, by automatically merging interdependent differences together.<br>
+
*A simple GUI with reusable UI components.
  
The final goal is to obtain a mature, versatile software building block for multiple usages: version control, incremental model transformations, model refactoring, etc.<br>
+
The final goal is to obtain a mature, versatile software building block for multiple usages: version control, incremental model transformations, model refactoring, etc.
  
 
The EMF Diff/Merge project is part of [http://www.eclipse.org/projects/project.php?id=modeling.emf EMF].<br>  
 
The EMF Diff/Merge project is part of [http://www.eclipse.org/projects/project.php?id=modeling.emf EMF].<br>  
Line 40: Line 40:
 
*[http://www.eclipse.org/forums/index.php?t=thread&frm_id=246 Forum]: the dedicated newsgroup  
 
*[http://www.eclipse.org/forums/index.php?t=thread&frm_id=246 Forum]: the dedicated newsgroup  
 
*[https://bugs.eclipse.org/bugs/buglist.cgi?list_id=2354424;classification=Modeling;query_format=advanced;component=Core;component=UI;product=EMF.Diffmerge Bugzilla]: for reporting bugs  
 
*[https://bugs.eclipse.org/bugs/buglist.cgi?list_id=2354424;classification=Modeling;query_format=advanced;component=Core;component=UI;product=EMF.Diffmerge Bugzilla]: for reporting bugs  
*[http://git.eclipse.org/c/diffmerge/org.eclipse.emf.diffmerge.core.git/ Source repository]: the git repository of source files
+
*[http://git.eclipse.org/c/diffmerge/org.eclipse.emf.diffmerge.core.git/ Source repository]: the git repository of source files  
 
*Build jobs: [https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/ main], [https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-helios/ legacy]<br>
 
*Build jobs: [https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/ main], [https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-helios/ legacy]<br>

Revision as of 11:16, 22 August 2012

Introduction

Merging models is a common need in model-based activities, not only for version control but for model manipulation in general. However, merging models is much more complex than merging source code. Since EMF models are rich data structures with constraints and behavior, merging them consistently is a delicate problem.

EMF Diff/Merge aims to help solve that problem. The tool is intended to satisfy the following requirements:

  • The consistency of the model being merged must be preserved whenever possible, by automatically merging interdependent differences together.
  • The order in which differences are merged must have no impact.
  • The tool must scale to large models.

The scope of EMF Diff/Merge covers:

  • A lightweight, configurable engine for comparing and merging EMF models in 2-way and 3-way (with common ancestor) configurations.
  • Matching of model elements by ID, where an ID can be any "signature" that uniquely identifies the element within its scope: Ecore ID, XML ID, qualified name, location in model tree, etc.
  • A simple GUI with reusable UI components.

The final goal is to obtain a mature, versatile software building block for multiple usages: version control, incremental model transformations, model refactoring, etc.

The EMF Diff/Merge project is part of EMF.

MainOverview.png

Usage

Download

The tool has been tested with Juno, Indigo and Helios (Eclipse Modeling 4.2, 3.7 and 3.6).

Links