Git Rivera graph in Pulsar
A new Git river is flowing into Pulsar: a Pharo implementation of git-rivera that generates commit graphs lazily, on demand. A faster and more scalable approach to browsing Git history, especially for large repositories.
As part of the work on Pulsar, I recently implemented a Pharo version of git-rivera, a very efficient text-based Git log graph viewer written in Go.
I wanted to use the same approach in Pulsar, so I implemented a version in Pharo, integrated with Spec and using the libgit2 bindings directly.


Git River on Pharo project, and its integration in the Pulsar repositories tool
The important part is that the graph is generated lazily: the component provides a generator that traverses the commit history on demand, computing only what the UI actually needs —I actually needed to enhance a little bit how new Spec lists and tables work to make this happen, as the generator itself was not enough—.
This solves a long-standing problem we have when working with Iceberg, Pharo's Git repository tool in. Iceberg has a nice graph visualization, but the current algorithm needs to traverse the complete commit graph before displaying it. For large repositories —like the Pharo repository itself—, this can be both time —like Pharo itself—and resource—consuming.
With Git Rivera, Pulsar can instead build and display the graph incrementally as you navigate through the history.
The new Git Rivera component is already available in Pulsar. Once the experimentation around it settles, I intend to upstream it into Pharo (next version, 15) itself. 😄
🧩 Git Rivera for Pharo:
https://forge.smallworks.eu/pharo/pharo-git-rivera