NAME

git-gerrit - Git extension to implement a Gerrit workflow

DESCRIPTION

WARNING: THIS IS STILL BETA CODE.

Git-gerrit is a Git extension to manage changes using Gerrit Code Review.

Git-gerrit offers a rich set of sub-commands to make it easy to create, query, amend, review, and submit changes to Gerrit, making it possible to interact with it through the command-line, avoiding its web interface most of the time and improving your efficiency. The goal is to make Gerrit's review process feel like a natural extension of Git.

INSTALLATION

Make sure you have at least Perl 5.10 installed. Check this with:

perl -v

Then, you should install the Git::Gerrit distribution from CPAN. You can do it manually or via one of these commands:

cpanm Git::Gerrit

cpan Git::Gerrit

Both commands should take care of non-core Perl dependencies for you.

Git-gerrit's full documentation can be read by typing

perldoc git-gerrit

ALTERNATIVES

There are some alternatives to git-gerrit, other Git extensions to make it easier to interact with Gerrit. The three mentioned below are the most well known. All of them use Gerrit's mature and simple SSH API while git-gerrit's distinguishes from them in that it uses Gerrit's newer and more comprehensive REST API.

  • git-review

    Being the original inspiration for git-gerrit, git-review is a mature tool that's used by some very well known projects, such as OpenStack, MediaWiki, and LibreOffice.

  • git-change

    Simpler than git-review, git-change is better documented and has the best name of all. From it, git-gerrit took the change-branch concept.

  • querrit

    A very simple tool to query Gerrit and make it easier to push changes.

TODO

An incomplete list of things to do in random order:

  • Document, document, document, ...

  • Test, test, test, ...

  • checkout CHANGE.patchsetNumber

    Allow for the checkout of a specific patchset of a change.

  • implement 'cherrypick'

  • implement 'diff'

  • implement the '--dry-run' option

  • implement 'log'

  • implement extensibility by plugins

    An example of a useful plugin would be to integrate change management with JIRA or other ticketing systems. Something like this.

    Another one would be to invite reviewers based on the history of the files/lines touched by the change.

  • implement a 'purge' command to get rid of merged/abandoned change branches

  • implement a bash completion script

  • support named-queries via git-gerrit.query configuration. This idea comes from querrit shortcuts.

  • implement 'git gerrit checkout topic'

COPYRIGHT

Copyright (c) 2012 by CPqD (http://www.cpqd.com.br/)

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.