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.
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.
- Via the update site: https://hudson.eclipse.org/hudson/job/buckminster-emf-diffmerge-master/lastSuccessfulBuild/artifact/result/publish/org.eclipse.emf.diffmerge.sdk.feature/site.p2/
- Or as dropins
The tool has been tested with Juno, Indigo and Helios (Eclipse Modeling 4.2, 3.7 and 3.6).
- Project summary: a summary of the current state of the project
- Project homepage: the classic Eclipse homepage for the project
- Project proposal: the original proposal that led to the creation of the project
- Forum: the dedicated newsgroup
- Bugzilla: for reporting bugs
- Source repository: the git repository of source files
- Build jobs: main, legacy