The most important function of LemonTree is the diffing and merging of different model versions. Standard approaches use line- and text-based applications that do not suffice for graphic models. Only the fine-grained 3-way diffing algorithm that considers the model’s graph structure allows an exact comparison between two models. This 3-way comparison for models that includes the basis version has now been realized in LemonTree. It enables calculation of changes in the current model versions; for each version it is calculated which property of a model element has changed. These changes are presented to the user in an intuitive, easy-to-understand fashion.
In addition to performance, the user-friendly display of diagram changes and ensuring model validity is an important component of a modern model versioning system. These requirements have been implemented in LemonTree. Conflicts between two model versions must naturally be resolved when they are merged. Automating this process can be achieved through various strategies, but a manual procedure often can’t be avoided. Changes and conflicts are often easy to display for the user. Changes to graphic models usually take place on the diagram level and must also be shown there. Therefore, LemonTree lists the calculated differences of two Enterprise Architect models in a finely-granulated way next to each other and visualized them in the current diagram.
LemonTree can be seamlessly integrated into existing versioning systems, currently with Subversion or, for example, Tortoise. This enables the centrally and automatic management of model versions. It also enables parallel editing of models in a team, as has for years been a common approach when editing source code. LemonTree for Enterprise Architect is referred to as a Diff & Merge Tool for Subversion as soon as a model is checked into the central repository.