Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF DiffMerge"

(23 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Introduction  ==
 
== Introduction  ==
 +
 +
EMF Diff/Merge is a diff/merge tool for models.
  
 
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 currently satisfies the following requirements:
 +
 
 +
*The consistency of the model being merged is preserved whenever possible, by automatically merging interdependent differences together.
 +
*The order in which differences are merged has no impact.
 +
*The global impact of a merge can be determined beforehand (picture below).
 +
*Undo/redo of merges is supported.
 +
*Comparison can be performed on any arbitrary model scope for better versatility and scalability.<br>
 +
 
 +
<br>
 +
 
 +
[[Image:ReducedOverview.png|center]]<br>
 +
 
 +
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.  
 
*A lightweight, configurable engine for comparing and merging EMF models in 2-way and 3-way (with common ancestor) configurations.  
Line 9: Line 23:
 
*A simple GUI with reusable UI components.
 
*A simple GUI with reusable UI components.
  
The tool is intended to satisfy the following requirements:  
+
The final goal is to obtain a mature, versatile software building block for multiple usages: version control, incremental model transformations, model refactoring, etc.
  
*It must support the comparison and merge of large models (scalability, reliability).  
+
The EMF Diff/Merge project is part of&nbsp;[http://www.eclipse.org/projects/project.php?id=modeling.emf EMF].  
*The order in which differences are merged must have no impact.
+
*The consistency of the model being merged must be preserved whenever possible, by automatically merging interdependent differences together.<br>
+
  
The final goal is to obtain a mature, versatile software building block for multiple usages: version control, incremental model transformations, model refactoring, etc.<br>
+
== Principle  ==
  
The EMF Diff/Merge project is part of [http://www.eclipse.org/projects/project.php?id=modeling.emf EMF].<br>
+
The usage process is illustrated by the figure below. First, a comparison is created based on the models to compare. The differences between those models are computed according to given policies. Then, as long as differences remain, any subset of these differences can be selected for merging. Every time, predefined consistency rules and user-defined policies are used to compute the minimal superset of differences that must be merged to preserve consistency. The user may decide whether to confirm or cancel the merge of the whole set of differences.<br>  
 +
 
 +
[[Image:Process.png|center]]
  
 
== Usage  ==
 
== Usage  ==
  
 
*[http://wiki.eclipse.org/EMF_DiffMerge/Programmatic_Usage Programmatic usage and concepts]  
 
*[http://wiki.eclipse.org/EMF_DiffMerge/Programmatic_Usage Programmatic usage and concepts]  
*[http://wiki.eclipse.org/EMF_DiffMerge/Default_GUI Default GUI]<br>
+
*[http://wiki.eclipse.org/EMF_DiffMerge/Default_GUI Default GUI]<br>  
 +
*[https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/javadoc/ Javadoc]
  
== Download ==
+
== Documents ==
  
The tool has been tested with Juno, Indigo and Helios (Eclipse Modeling 4.2, 3.7 and 3.6).
+
*[http://wiki.eclipse.org/images/4/4c/EDM_ECE12.pdf Overview] at EclipseCon Europe 2012 - Modeling Symposium
 +
 
 +
== Download<br>  ==
  
 
*Via the update site:&nbsp;[https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/site.p2/ https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/site.p2/]  
 
*Via the update site:&nbsp;[https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/site.p2/ https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/site.p2/]  
 
*Or as [https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/dropins/*zip*/dropins.zip dropins]
 
*Or as [https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/dropins/*zip*/dropins.zip dropins]
  
== Links<br>  ==
+
The tool has been tested with Juno, Indigo and Helios (Eclipse Modeling 4.2, 3.7 and 3.6).
 +
 
 +
== Links&nbsp; ==
  
*[http://www.eclipse.org/projects/project.php?id=modeling.emf.diffmerge Project summary]: a summary of the current state of the project  
+
*[http://www.eclipse.org/projects/project.php?id=modeling.emf.diffmerge Project summary]: a summary of the current state of the project<br>
 +
*[http://eclipse.org/diffmerge/ Project homepage]: the standard Eclipse web page for the project, essentially referring to this wiki
 
*[http://www.eclipse.org/proposals/modeling.emf.edm/ Project proposal]: the original proposal that led to the creation of the project  
 
*[http://www.eclipse.org/proposals/modeling.emf.edm/ Project proposal]: the original proposal that led to the creation of the project  
 
*[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
 
*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:32, 6 November 2012

Introduction

EMF Diff/Merge is a diff/merge tool for models.

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 currently satisfies the following requirements:

  • The consistency of the model being merged is preserved whenever possible, by automatically merging interdependent differences together.
  • The order in which differences are merged has no impact.
  • The global impact of a merge can be determined beforehand (picture below).
  • Undo/redo of merges is supported.
  • Comparison can be performed on any arbitrary model scope for better versatility and scalability.


ReducedOverview.png

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.

Principle

The usage process is illustrated by the figure below. First, a comparison is created based on the models to compare. The differences between those models are computed according to given policies. Then, as long as differences remain, any subset of these differences can be selected for merging. Every time, predefined consistency rules and user-defined policies are used to compute the minimal superset of differences that must be merged to preserve consistency. The user may decide whether to confirm or cancel the merge of the whole set of differences.

Process.png

Usage

Documents

  • Overview at EclipseCon Europe 2012 - Modeling Symposium

Download

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

Links 

Back to the top