=head1 NAME
The git-gerrit script is a Git extension to implement a Gerrit
workflow.
=head1 DESCRIPTION
WARNING: THIS IS STILL BETA CODE.
Git-gerrit is a Git extension to manage changes using L.
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.
=head1 INSTALLATION
Make sure you have at least Perl 5.10 installed. Check this with:
perl -v
Then, you should install the
L
distribution from L. The best way to do
it is to use a CPAN package installer, such as
L, like
this:
cpanm App::GitGerrit
If you don't have C already, read the L
module.
The cpanm should take care of other Perl dependencies for you. The
C script should be installed in a directory already in
your PATH. To read its documentation you can type
perldoc git-gerrit
=head1 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.
=over
=item * L
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.
=item * L
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.
=item * L
A very simple tool to query Gerrit and make it easier to push changes.
=back
=head1 TODO
An incomplete list of things to do in random order:
=over
=item * Document, document, document, ...
=item * Test, test, test, ...
=item * checkout CHANGE.patchsetNumber
Allow for the checkout of a specific patchset of a change.
=item * implement 'cherrypick'
=item * implement 'diff'
=item * implement the '--dry-run' option
=item * implement 'log'
=item * implement extensibility by plugins
An example of a useful plugin would be to integrate change management
with JIRA or other ticketing systems. Something like
L.
Another one would be to invite reviewers based on the history of the
files/lines touched by the change.
=item * implement a 'purge' command to get rid of merged/abandoned change branches
=item * implement a bash completion script
=item * support named-queries via git-gerrit.query configuration. This
idea comes from L
shortcuts.
=item * implement 'git gerrit checkout topic'
=back
=head1 COPYRIGHT
Copyright (c) 2013 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.