[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
   of projects.

 * 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
   to Gerrit.

 * 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 mailing list