App-GitHooks
view release on metacpan or search on metacpan
[](https://travis-ci.org/guillaumeaubert/App-GitHooks)
[](https://coveralls.io/r/guillaumeaubert/App-GitHooks?branch=master)
[](https://metacpan.org/release/App-GitHooks)
[](http://dev.perl.org/licenses/)
`App::GitHooks` is an extensible and easy to configure git hooks framework that
supports many plugins.
OVERVIEW
--------
* Here's an example of it in action, running the `pre-commit` hook checks before
the commit message can be entered:

* Here is another example, with a Perl file that fails compilation this time:

INSTALLATION
------------
1. Install this distribution (with `cpanm` or your preferred CPAN client):
cpanm App::GitHooks
2. Install the plugins you are interested in (with `cpanm`or your prefered CPAN
client), as `App::GitHooks` does not bundle them. See the list of plugins
below, but for example:
cpanm App::GitHooks::Plugin::BlockNOCOMMIT
cpanm App::GitHooks::Plugin::DetectCommitNoVerify
...
3. Go to the git repository for which you want to set up git hooks, and run:
githooks install
4. Enjoy!
OFFICIALLY SUPPORTED PLUGINS
----------------------------
* [App::GitHooks::Plugin::BlockNOCOMMIT]
(https://metacpan.org/pod/App::GitHooks::Plugin::BlockNOCOMMIT)
Prevent committing code with #NOCOMMIT mentions.
* [App::GitHooks::Plugin::BlockProductionCommits]
(https://metacpan.org/pod/App::GitHooks::Plugin::BlockProductionCommits)
Prevent commits in a production environment.
* [App::GitHooks::Plugin::DetectCommitNoVerify]
(https://metacpan.org/pod/App::GitHooks::Plugin::DetectCommitNoVerify)
Find out when someone uses --no-verify and append the pre-commit checks to the
commit message.
* [App::GitHooks::Plugin::ForceRegularUpdate]
(https://metacpan.org/pod/App::GitHooks::Plugin::ForceRegularUpdate)
Force running a specific tool at regular intervals.
* [App::GitHooks::Plugin::MatchBranchTicketID]
(https://metacpan.org/pod/App::GitHooks::Plugin::MatchBranchTicketID)
Detect discrepancies between the ticket ID specified by the branch name and the
one in the commit message.
* [App::GitHooks::Plugin::PerlCompile]
(https://metacpan.org/pod/App::GitHooks::Plugin::PerlCompile)
Verify that Perl files compile without errors.
* [App::GitHooks::Plugin::PerlCritic]
(https://metacpan.org/pod/App::GitHooks::Plugin::PerlCritic)
Verify that all changes and addition to the Perl files pass PerlCritic checks.
* [App::GitHooks::Plugin::PerlInterpreter]
(https://metacpan.org/pod/App::GitHooks::Plugin::PerlInterpreter)
Enforce a specific Perl interpreter on the first line of Perl files.
* [App::GitHooks::Plugin::PgBouncerAuthSyntax]
(https://metacpan.org/pod/App::GitHooks::Plugin::PgBouncerAuthSyntax)
Verify that the syntax of PgBouncer auth files is correct.
* [App::GitHooks::Plugin::PrependTicketID]
(https://metacpan.org/pod/App::GitHooks::Plugin::PrependTicketID)
Derive a ticket ID from the branch name and prepend it to the commit-message.
* [App::GitHooks::Plugin::RequireCommitMessage]
(https://metacpan.org/pod/App::GitHooks::Plugin::RequireCommitMessage)
Require a commit message.
* [App::GitHooks::Plugin::RequireTicketID]
(https://metacpan.org/pod/App::GitHooks::Plugin::RequireTicketID)
Verify that staged Ruby files compile.
* [App::GitHooks::Plugin::ValidatePODFormat]
(https://metacpan.org/pod/App::GitHooks::Plugin::ValidatePODFormat)
Validate POD format in Perl and POD files.
CONTRIBUTED PLUGINS
-------------------
* [App::GitHooks::Plugin::RubyCompile]
(https://metacpan.org/pod/App::GitHooks::Plugin::RubyCompile)
( run in 0.881 second using v1.01-cache-2.11-cpan-99c4e6809bf )