Demonstration of the upcoming Tickets feature in Gitblit 1.4.0
Tickets are stored as an append-only journal (array) of JSON change objects. JSON?! Yup, no relational tables or anything complex like that. A ticket is built by processing the journal entries, in order, and applying the changes. The JSON journals are stored either on the filesystem, an orphan branch within the repository, or in a Redis LIST.
The complete ticket objects are indexed with Apache Lucene to provide a rich SQL-like query capability. Built tickets are also cached using an expiring Google Guava object cache.