=head1 NAME

git-gerrit - 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<Gerrit Code
Review|http://code.google.com/p/gerrit/>.

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 App::GitGerrit distribution from
L<CPAN|http://search.cpan.org/dist/App-GitGerrit/>. You can do it
manually or via one of these commands:

    cpanm App::GitGerrit

    cpan App::GitGerrit

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

=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<git-review|https://github.com/openstack-infra/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.

=item * L<git-change|https://github.com/Nextdoor/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.

=item * L<querrit|https://gitorious.org/querrit/querrit>

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<this|https://npmjs.org/package/git-jira>.

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<querrit|https://gitorious.org/querrit/querrit>
shortcuts.

=item * implement 'git gerrit checkout topic'

=back

=head1 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.
