Skip to main content
Jump to: navigation, search

Difference between revisions of "EMF Compare/New and Noteworthy/3.1.0"

(Items for not loaded fragments (available since nightly build 2015-03-17))
(Adds all current contributors)
Line 119: Line 119:
Mikaël Barbero,
Mikaël Barbero,
Cédric Brun,
Cédric Brun,
Philip Langer,
Alexandra Buzila,
Laurent Delaigue,
Stefan Dirix,
Laurent Goubet,
Laurent Goubet,
Maximilian Koegel,
Philip Langer,
Axel Richard,
Axel Richard,
Arthur Daussy.
Arthur Daussy.
[[Category:EMF Compare]]
[[Category:EMF Compare]]

Revision as of 03:25, 9 April 2015

EMF Compare


Handle FeatureMap differences (available since nightly 2014-07-08)

  • Detects addition/deletion of a value for a given key of a map.
  • Detects key change for a given value of a map.
  • Detects move of a value inside a map (the key stays the same).
  • Detects move of a value inside a map (the key changes).
  • Detects move of a value from a map to another (the key stays the same).
  • Detects move of a value from a map to another (the key changes).
  • Add a new filter to hide feature map changes that has related reference changes. With EMF Ecore models, features of type EFeatureMapEntry are linked with EReferences via ExtendedMetaData (see the EMF Library example for more details). Here is a partial view of the EMF Ecore Library model showing a feature of type EFeatureMapEntry (people) and its EReferences associated (employees, borrowers)
EMFCompare Library FeatureMap 04.png

So, for example, the addition of a new Employee in the library will modify the reference employees but also the map people. With EMF Compare, the comparison will detect two changes, one on the employees reference and one on the people map. These two differences are equivalent. If you merge one, the other will be merged too. The filter allows to hide the changes on the map, and so reduce the number of changes displayed in the viewer.

    • With filter active

EMFCompare Library FeatureMap 01.png

    • With filter inactive

EMFCompare Library FeatureMap 02.png

    • With filter inactive, and a difference on the map selected: the associated difference on the reference is highlighted in green (this mean that in case of merge, the difference on the reference will be merged too).

EMFCompare Library FeatureMap 03.png

UI: new contextual menu on differences (available since nightly 2014-09-26)

  • If you do a right-click on a difference in the viewer, a contextual menu now offers you to merge the selected difference. These actions are the same than those in the toolbar.
    • With local models

EMFCompare ContextualMenu Differences.png

    • With a read-only side (comparison with EGit)

EMFCompare ContextualMenu Differences 02.png

UI: Expand group on double-click (available since nightly 2014-09-26)

  • In the viewer, a double-click on a group now expands it to the second level of depth.

EMFCompare Group DoubleClick 01.png EMFCompare Group DoubleClick 02.png

UI: new labels for conflicts (available since nightly 2014-10-10)

  • In the viewer, the conflicts group items have been enhanced. The label shows the total number of conflicted differences under the group and the number of conflicted differences still unresolved. When all differences under a group have been resolved, the group label switch as resolved and its icon turned into gray.
Before After (unresolved) After (resolved)
EMF Compare Conflicts Label Old.png EMF Compare Conflicts Label New.png EMF Compare Conflicts Label New 02.png

Three-way merging multi-line String attributes (available since nightly 2014-10-28)

  • EMF Compare now checks whether concurrent changes applied to multi-line String attributes can be merged automatically using a three-way line-based merge algorithm, as used in Git. Only if such concurrent changes cannot be merged automatically, EMF Compare will raise a conflict. Otherwise, changes to multi-line String attributes will be merged automatically.

New Logical Model View (available since nightly 2014-11-06)

The EMF Compare Logical Model View allows to see, for a given model (or set of models), the resulting logical model computed by EMF Compare.

  • When you click on a model in the Package Explorer view or the Project Explorer view, or the focus is on an opened model editor, then the Logical Model view shows this model and all models linked with this one.

EMF Compare LogicalModelView.png

  • Items can be displayed as list or tree (change representation via toolbar).
List Tree
EMF Compare LogicalModelView List.png EMF Compare LogicalModelView Tree.png

Improved Handling of UML Opaque Action, Behavior, and Expression Body Changes

UML opaque actions, behaviors, and expressions have a multi-valued language attribute and a multi-valued body attribute, which are logically connected through the indices of their values, comparable to a map of languages (key) and bodies (values). To accommodate for this logical connection, we introduced specific handling of changes applied to values of the language and body attribute of UML opaque actions, behaviors, and expressions. EMF Compare now detects accordingly changes of body values of a language, as well as additions, deletions, and moves of language/body value pairs. Furthermore, this connection is also respected for the detection of conflicts and for merging to keep the language/body map consistent.

  • Before: Without specific handling of UML Opaque Action
 EMF Compare OpaqueElementBodyChanges Before.png
  • After: With specific handling of UML Opaque Action
 EMF Compare OpaqueElementBodyChanges After.png

Items for not loaded fragments (available since nightly build 2015-03-17)

When a model is split into fragments, and only some of them have changes, the structure merge viewer (SMV) and the content merge viewers (CMV) display the models involved in the comparison but don’t display the fragments that have no changes.

If a change (x) is detected in a fragment (B), and this fragment is a child of another fragment (A) that has no changes, then (A) won't appear in the SMV and the CMV's. As a result, users will think (B) is the root of the global model.

To avoid this, the idea is to display intermediate node(s) (represented as [...]) in order to show to users that it exists something (fragments, i.e. a parts of models) between/above the changes.

Without and with items for not loaded fragments

Feature XXX

  • Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  • Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

/ Screenshot /

  • Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

/ Screenshot /

Bug Fixes

XXX Bugs and XXX enhancement requests were closed


The following XXXX developers worked on this release:

Mikaël Barbero, Cédric Brun, Alexandra Buzila, Laurent Delaigue, Stefan Dirix, Laurent Goubet, Maximilian Koegel, Philip Langer, Axel Richard, Arthur Daussy.

Back to the top