LemonTree 2.6.1 introduces the LemonTree Starter to facilitate an improved integration of LemonTree into various version control systems.
The LemonTree Starter is built to solve two major problems encountered when integrating LemonTree into a version control system:
- Configuring LemonTree as a mergetool in a Git LFS environment
- Configuring LemonTree to only diff/merge specific file extensions
Configuring LemonTree as a mergetool in a Git LFS environment
The commands recommended by the help page Using LemonTree with git with older LemonTree versions (which can be found here: Direct Git Integration (Version 2.6 or older)) will write an entry into the .gitattributes files which looks like this:
This entry tells git that it should call lemontree when merging .eap files. Simple enough, right?
This entry works fine for non-LFS environments.
However, when you turn on Git LFS for eap files in a Git Repository, you end up with an entry which looks like this:
*.eap filter=lfs diff=lfs merge=lfs
This entry, in turn, tells git to call the tool "lfs" when merging .eap files. Calling this tool is required for Git LFS to work, as it replaces the pointer file in the repository with the actual .eap file, allowing the mergetool to process the actual file.
However, as can be seen in the previous codeblock, we need to change precisely this setting for LemonTree to be triggered.
The correct solution for this problem is the following:
- Install LemonTree 2.6.1 or above, so you have the LemonTree Starter available
- set up your .gitconfig according to this help page: Direct Git Integration (Version 2.6.1 or newer) (Refer to Section 1.2)
Configuring LemonTree to only diff/merge specific file extensions
When configuring your .gitconfig according to this help page: Direct Git Integration (Version 2.6.1 or newer), you will notice that there's a warning that this will assign LemonTree as a diff/merge tool for all types of extensions. The reasoning for this is that, to our knowledge, there is no possibility to set up a merge tool for only specific extensions in the .gitconfig.
Now, setting up a general-purpose mergetool that can deal with any type of file this way would be fine of course. However, since LemonTree is a mergetool for very specific type of files, this kind of hook catches way more than it should.
To solve this problem, the LemonTree Starter can be configured to only process specific file extensions:
- open up a command prompt
start the lemontree starter command line tool with the paramater "config", like so:
C:\Program Files\LieberLieber\LemonTree>LemonTree.Starter.exe config
The on-screen help will help you configure the LemonTree Starter so it only reacts to specific file extensions
Depending on the use-case, git might only provide merge files to LemonTree with extensions which look like this:
.merge_file_[Id] In these cases, configuring LemonTree Starter only for specific file extensions will not work, as these extensions are used regardless of the original extensions of the files to merge.
This problem is solved by some of the available commercial git tools by allowing the user to configure LemonTree only for specific extensions directly