LemonTree is slow, what can I do to improve performance?
LemonTree needs strong hardware to quickly load, diff and merge models. We recommend a recent middle-class CPU (i5, Ryzen, Xeon E3 at the time of writing), paired with a large amount of RAM (16GB in Dual Channel configuration). LemonTree parallelizes its most demanding tasks, so these are the most important metrics for LemonTree to run fast:
- Number of physical cores
- Speed of those cores
- Available memory
- Memory bandwidth
Enterprise Architect uses a legacy version of Microsoft Access to store the data for .eap(x) models. Both reading and writing models need to utilize appropriate drivers to interact with the .eap(x) models, which are notoriously slow.
This puts a natural limit on any performance improvements we can include in LemonTree.
Unfortunately, this also means that better hardware can only improve performance up to a point. Don't expect big performance gains from server-class hardware.
LemonTree needs to load representations of up to 3 different models into memory to efficiently perform both the diff and merge. These representations LemonTree are built to ensure maximum processing speed and may require significantly more RAM than the required disk space of the model. If your computer can supply the necessary RAM to do so, this does not have an adverse effect on the performance of LemonTree.
However, once the memory usage of a computer approaches the hardware maximum, a process is known as memory swapping sets in. Parts of the current RAM are written to the hard disk so they can be re-used, and the data is retrieved from the hard disk. While this technique provides additional RAM, the switch itself is excessively slow. As such, once a LemonTree diff/merge requires memory swapping to be used, it will still be complete, but it will take a multiple of the otherwise required time.
We're always looking for ways to improve the performance of LemonTree. As such, it's a good idea to always keep your version of LemonTree up-to-date to ensure optimal performance.
More details on the development of performance and memory consumption of different LemonTree versions can be found here:
Is a silent install possible and can I exclude optional features during the silent install?
The silent install and the exclusion of optional features is possible.
In our example, we install LemonTree 3.1.0 without the EA-Addin feature.
Open the command prompt with the key combination [Windows] + [R] and the command "cmd".
msiexec /i LemonTreev3.1.0.msi ADDLOCAL="all" REMOVE="EAAddinFeature"
With this command, the UI will still show, but the optional feature "Addin for Enterprise Architect" is excluded
To use this within a silent install (no UI) the /q ensures unattended installation.
msiexec /i LemonTreev3.1.0.msi ADDLOCAL="all" REMOVE="EAAddinFeature" /q
Does LemonTree support diffing/merging my entire model?
Due to the complexity of data of the various model types supported by LemonTree, and LemonTree's mechanism of accessing this data (by reading the stored data directly), there is, unfortunately, no way to accurately judge if all data stored in your model will be correctly diffed/merged.
We are currently working on a comprehensive evaluation of this topic, but the results are still unfinished.
For now, we are maintaining a list of Enterprise Architect features that are not supported by LemonTree, which you can find here:
LemonTree is reporting that my model has inconsistencies. What happened? What can I do?
This is a complex topic, unfortunately, but we'll do our best to help. Please see the separate page on this topic:
Text in the Tree Browser is partially cut off. How do I see the whole text?
The GUI of LemonTree is an HTML-GUI. So the features of HTML are available.
Use "Shift" and the mouse wheel to scroll horizontally.
I have trouble installing the RLM License Server for Floating licenses. What can I do?
Version Control Systems
Which GIT server to choose and how to connect it with LemonTree?
LemonTree is only installed on the GIT client and only needs to be configured there.
It is irrelevant which Git server (i.e. Github, BitBucket, DevOps, GitLab, etc.) is used, the decisive factor is the VCS client.
That's why LemonTree is so versatile because there is no dependency on a server, but only one VCS client has to be configured with LemonTree.
Which VCS client to choose and how to connect it with LemonTree?
If LemonTree is then installed it will be automatically entered in the VCS client as diff and merge tool and from then on you work with git, as usual, i.e. clone project, add EA project, commit and push.
Where do I find the log files of LemonTree?
Log files can be downloaded via the burger menu.
They can also be found in %appdata%\LieberLieber\LemonTree\logs
If you've discovered any irregularities, please don't hesitate to report an issue. Details can be found here:
Why can't I use LemonTree Components with the new QEA file format?
QEA is meant as a single user personal file format, meaning the internal SQLite database is locked during EA runtime.
As a result, we opted to just support QEAX for our Components workflow.
QEAX support everything else that QEA can do and converting is as simple as changing the file extension.
Which formats are supported by LemonTree?
LemonTree can use the following formats for the diff and merge:
- All types of EA repositories (except Cloud Repositories and Firebird)
- OLEDB / ODBC
- Native drivers (from EA 16)
- MPMS Format (LemonTree Format used for LemonTree Components)
- MMS files (OpenMBEE format)
- Magic Draw Files
Unfortunately, XMI files from EA or baselines or RAS components cannot be compared with LemonTree.
The LemonTree Components are ideal for working with LemonTree at package level and managing them as reusable parts. Similar to XMI exports, the components are an extract from a model, which can be imported and synchronized in another model. This allows you to cover similar functions as with the RAS.
Why do I receive a merge window when I publish components?
The component has already been published and changes have been made. If you publish again, LemonTree is called for the merge. To be more precise; The base version of the model is different from the one in the folder and the current version of the model (which was changed local) is different and published. LemonTree is called for the merge and does this automatically if the same elements in the model have not been changed.
What is the repository in the component's context?
The repository is the collection of mpms files - basically, the folder configured to publish and import. (The folder where all mpms files are collected.)
Questions Webinar April 2, 2020
Where can I see which branch was checked out?
Answer: The selected branch is "greyed out" in the LemonTree addin menu.
Franc: About the LemonTree integration with EA: it's the first time I see this menu in a presentation. Is it already part of LemonTree? Is it another addon? Where can I find it. I only use LT from Tortoise as of now.
Answer: The LemonTree Addin is part of the LemonTree setup (2.5 and higher)
How does commenting on the commit align with change history in EA?
Can codebase (e.g. Visual Studio Solution) and model be held together in the same GitRepo?
Answer: Yes. This is one major advantage of this approach.
Would GIT be able to resolve this automatically when you'd checking MPMS exports instead eap files?
Answer: If you have separated MPMS, the behavior is similar, because it has to be prevented that a text-based merge tool is touching the MPMS files. Completely automatic merge is possible when hooks are defined within the Git client.
All files are stored as binary? hence every commit (change) is a copy of the binary. what about the size of the git repo after all this commits, i guess it is getting huge
Answer: We suggest to use the Large File Storage extension for Git. Here, only pointer references are committed. Please see: https://git-lfs.github.com/
Why zooming is improportional in three views?
Answer: Typically zooming is in sync in all views of the diagram viewer.
Is there a visual indication in LemonTree showing what A and B refer to? (= what branch)
Answer: LT can be configured to show the revision for the A and B Model, using the yrev and brev parameters. Installing the Tortoise integration of LT already handles this. The revision is shown in the header and tooltip of the corresponding view in LT (above the model tree).
Why is the diagram shown as conflicted. the diagram itself has been only modified in B
Answer: The diagram is shown as conflicted because the diagram representations, which are sub-objects of the diagram, have been modified (i.e. there Position has changed). This would be visible when expanding the diagram in LT where it would Show the corresponding element and diagram representation.
Where was the confirm of the change and one conflict was still shown at the upper left corner
Answer: Changes in LT are confirmed once at the end by selecting Merge which applies these changes. The number of conflicts does not update as LT does not know when a conflict has been fully resolved. However, you can use the review checkmarks and Filtering Impacted Elements / Impacted Diagrams and the Tree Browser functionality to hide elements which caused a conflict but have been reviewed already.
In the merge-window: is there a possibility to list all conflicts and which of them are already resolved?
Answer: There is a preconfigured filter to show only conflicted elements. You can use the check marks next to the elements in the "List of Impacted elements" and combine both filters:
#Conflicted AND NOT #Reviewed
Are you thinking about (or planing) offering Lemon Tree for Cameo Systems Modeler?
Answer: From a technological point of view, LemonTree middle ware is designed to be used in a tool independent way. However, technological challenges are usually the smallest challenges.
When I was evaluating LemonTree in the past, I observed that obvious changes could be merged easily. But I really struggled getting a good overview of the changes in diagrams. How would I deal with that? Could you demo this?
Answer: We've introduced advanced filter mechanisms to support users in getting a better overview of all changes. We can show you the possibilities in a web meeting!
What is your recommendation if we have several "long living" feature branches. Regularly merging the develop into the different branches or making "rebase"-branches based on develop and merging the original feature branch onto the new "develop" base?
Answer: It is hard to recommend one approach over the other, as the answer depends a lot on the way modeling is done as well as the structure of the model and the nature of these feature branches. However, rebasing your feature branches often reduces the time between the change and the (potential) merge of this change into your main branch. As such, resolving conflicts tends to be easier when doing the rebases often. Related to that, in general we recommend squashing of the feature branch before doing a rebase if possible, as it reduces the number of required merges and therefore the time it takes to do the merge.
How he can find out the element type?
In the Impacted element list (or in the tree), hover over the icon of the changed element. Select the element and navigate to the proberties view. Select either "All" or "Set" at the right hand side to show the UML type.
Questions Webinar April 28, 2021: LemonTree 3.0 Live Demo
Can the functionality also be used to split up huge models?
Answer: One use case of the "model splitting feature" is definitely dividing huge models in smaller parts for better model management and version control.
SVN is beneficial for huge models, that is why we still use it.
Answer: EAP(x) files can be still checked in into SVN. LemonTree is still automatically integrated in TortoiseSVN.
Importing a model, makes a copy of it or it links into it?
Answer: When importing a model, a copy is created. This follows the idea of branching. We recommend to check-in the EAP with the imported model into Git.
Can I export the difference results as a report?
Answer: Reports (csv, html, pdf, etc.) are currently not part of the standard product.
Which EA version is required for this feature?
Answer: We recommend EA 14 or higher. From a technical point of view, it should also work with older version of EA.
Does this text-based diff also work with scripts inside the model?
Answer: The DB table containing the scripts are currently neglected. We recommend to put the scripts into an MDG technology for the better deployment.
Is the creation of links also disabled if the LemonTree Add-In in Sparx is not active?
Answer: The model elements are still locked, when the Add-In is deactivated.