EMF Compare brings model comparison to the EMF framework, this tool provides generic support for any kind of metamodel in order to compare and merge models. The objectives of this component are to provide a stable and efficient generic implementation of model comparison and to provide an extensible framework for specific needs.

Overview

The above figure represents the comparison process of EMF Compare. It can be roughly divided in 6 main phases.

Model Resolving

From a given "starting point" (the file a user decided to compare), finding all other fragments required for the comparison of the whole logical model.

Matching

Iterating over the two (or three) loaded logical models in order to map elements together two-by-two (or three-by-three). For example, determine that class Class1 from the first model corresponds to class Class1' from the second model.

Differencing

The matching phase told us which elements were matching together. The differencing phase will browse through these mappings and determine whether the two (or three) elements are equal or if they present differences (for example, the name of the class changed from Class1 to Class1').

Equivalences

The differencing phases detected a number of differences between the compared models. However, two distinct differences might actually represent the same change. This phase will browse through all differences and link them together when they can be seen as equivalent (for example, differences on opposite references).

Requirements

For the purpose of merging differences, there might be dependencies between them. For example, the addition of a class C1 in package P1 depends on the addition of package P1 itself. During this phase, we'll browse through all detected differences and link them together when we determine that one cannot be merged without the other.

Conflicts

When we're comparing our file with one from a Version Control System (CVS, SVN, Git, Clearcase...), there might actually be conflicts between the changes we've made locally, and the changes that were made to the file on the remote repository. This phase will browse through all detected differences and detect these conflicts.

Compatibility

The EMF Compare development team does its best to maintain downward compatibility towards Europa (3.3). Following is the compatibility chart :

EMF Compare

Eclipse 3.2 - EMF 2.2

Eclipse 3.3 - EMF 2.3

Eclipse 3.4 - EMF 2.4

Eclipse 3.5 - EMF 2.5

Eclipse 3.6 - EMF 2.6

Eclipse 3.7 - EMF 2.7

Eclipse 3.8 - EMF 2.8

0.7

OK

0.8

KO

OK

OK

1.0

KO

OK

OK

OK

OK

1.1

KO

KO

OK

OK

OK

OK

OK

1.2

KO

KO

OK

OK

OK

OK

OK

1.3

KO

KO

KO

OK

OK

OK

OK

2.0

KO

KO

KO

OK

OK

OK

OK

An empty cell indicates that the compatibility hasn't been tested for a particular combination.