Patched Jackrabbit in Bloomreach Experience Manager Repository
The content repository, the persistence layer backing Bloomreach Experience Manager, is based on Apache Jackrabbit 2.x. We're using a patched version of Jackrabbit. Although this is not our preferred way of working, and whenever possible we'd like to contribute our improvements back to Jackrabbit, unfortunately there are cases where we have no other options at the time: either because there is a bug and because we can't be as quick to create a new tag of Jackrabbit; and/or an improvement that is specific to Bloomreach Experience Manager's use case, for which at the moment there is no generic solution for Jackrabbit available.
For this purpose we are using a bloomreach/jackrabbit git mirror of the Apache jackrabbit (git) repository: git://git.apache.org/jackrabbit.git
Within this git mirror, which gets automatically updated and from the upstream Apache repository, we maintain our patched version through separate branches, named bloomreach/jackrabbit-<version>-hx, which is based off a specific jackrabbit version release tag.
The branch -hx postfix indicated the first/initial target patched Jackrabbit version maintained in that branch.
New patches will be developed in that branch until we tag a new pached version named jackrabbit-<version>-hx, after which we will continue using the same branch for future -hx+1 versions.
If we need to modify a set of patches for a specific Jackrabbit version however, we'll create a new branch bloomreach/jackrabbit-<version>-hy based off the previous bloomreach/jackrabbit-<version>-hx up to the patch which needs to be modified, and then proceed with the changes in that new branch.
For a new Jackrabbit version we start again from the base Jackrabbit version tag and replay and rework the existing patches in a new bloomreach/jackrabbit-<new version>-h1 branch.