[openstack-dev] Announcing Gertty 1.0.0: A console interface to Gerrit
James E. Blair
corvus at inaugust.com
Thu Sep 4 23:17:04 UTC 2014
Announcing Gertty 1.0.0
Gertty is a console-based interface to the Gerrit Code Review system.
If that doesn't sound interesting to you, then just skip right on to
the next message. This mailing list gets a lot of traffic, and it's
going to take you a while to read it all in that web browser you're
Gertty was written by and for coremudgeons. But it's not just because
we think mutt is the apex of user interface design.
We write code in a terminal. We read logs in a terminal. We debug code
in a terminal. We commit in a terminal. You know what's next.
This is why I wrote Gertty:
* Workflow -- the interface is designed to support a workflow similar
to reading network news or mail. In particular, it is designed to
deal with a large number of review requests across a large number
* Offline Use -- Gertty syncs information about changes in subscribed
projects to a local database and local git repos. All review
operations are performed against that database and then synced back
* Speed -- user actions modify locally cached content and need not
wait for server interaction.
* Convenience -- because Gertty downloads all changes to local git
repos, a single command instructs it to checkout a change into that
repo for detailed examination or testing of larger changes.
* Information Architecture -- in a console environment, Gertty can
display information to reviewers in a more compact and relevant
* Colors -- I think ANSI escape sequences are a neat idea.
Here are some reasons you may want to use Gertty:
* Single page diff -- when you look at a diff, all of the files are
displayed on the same screen making it easier to see the full
context of a change as you scroll effortlessly around the files
that comprise it. This may be the most requested feature in
Gerrit. It was harder to make Gertty show only only one file than
it was to do all of them so that's what we have. You still get the
choice of side-by-side or unified diff, color coding, inline
comments, and intra-line diffs.
* The checkout and cherry-pick commands -- Gertty works directly on
your local git repos, even the same ones you hack on. It doesn't
change them unless you ask it to, so normally you don't notice it's
there, but with a simple command you can tell Gertty to check out a
change into your working tree, or cherry-pick a bunch of changes
onto a branch to build up a new patch series. It's like "git
review -d" if you've ever used it, but instead of typing "git
review -d what-was-that-change-number-again?" you type "c".
* Your home address is seat 7A (or especially if it's 1A) -- Gertty
works seamlessly online or offline so you can review changes while
you're flying to your 15th mid-cycle meetup. Gertty syncs all of
the open changes for subscribed projects to a local database and
performs all of its operations there. When it's able to connect to
Gerrit, it uploads your reviews instantly. When it's unable, they
are queued for the next time you are online. It handles the
transition between online and offline effortlessly. If your
Internet connection is slow or unreliable, Gertty helps with that
* You review a lot of changes -- Gertty is fast. All of the typical
review operations are performed against the local database or the
local git repos. Gertty can review changes as fast as you can. It
has commands to instantly navigate from change to change, and
shortcuts to leave votes on a change with a single keypress.
* You are particular about the changes you review -- Gertty lets you
subscribe to projects, and then displays each of those projects
along with the number of open changes and changes you have not
reviewed. Open up those projects like you would a newsgroup or
email folder, and scroll down the list of changes. If you don't
have anything to say about a change but want to see it again the
next time it's updated, just hit a key to mark it reviewed. If you
don't want to see a change ever again, hit a different key to kill
it. Gertty helps you review all of the changes you want to review,
and none of the changes you don't.
* Radical customization -- The queries that Gertty uses by default
can be customized. It uses the same search syntax as Gerrit and
support most of its operators. It has user-defined dashboards that
can be bound to any key. In fact, any command can be bound to any
key. The color palette can be customized. You spend a lot of time
reviewing changes, you should be comfortable.
* Your terminal is an actual terminal -- Gertty works just fine in 80
columns, but it is also happy to spread out into hundreds of
columns for ideal side-by-side diffing.
* Colors -- you think ANSI escape sequences are a neat idea.
If you're ready to give it a shot, here's what to do:
pip install gertty
wget https://git.openstack.org/cgit/stackforge/gertty/plain/examples/openstack-gertty.yaml -O ~/.gertty.yaml
# edit ~/.gertty.yaml and update anything that says "CHANGEME"
It will walk you through what to do next. For help on any screen, hit
F1 or "?".
For more information on installation or usage, see the README here:
More information about the OpenStack-dev