# PODNAME: TODO
# ABSTRACT: Ideas for future versions of Git::Hooks

__END__

=pod

=encoding UTF-8

=head1 NAME

TODO - Ideas for future versions of Git::Hooks

=head1 VERSION

version 1.13.1

=head1 TO-DO list of niceties for the future of Git::Hooks.

The following list is no order whatsoever. Any comments or other suggestion
are welcome at gnustavo AT cpan.org.

=head2 Support the WIN32 Platform

Currently we abort the build on C<Makefile.PL>.

=head2 Improve documentation

We need:

=over

=item * A plugin developer tutorial

=item * Revise documentation and make it more uniform

=item * Follow the advice in L<13 Things People Hate about Your Open Source
Docs|http://blog.smartbear.com/careers/13-things-people-hate-about-your-open-source-docs/>

=back

=head2 I18N

Use Locale::TextDomain to internationalize it?

=head2 L10N pt_BR

As a first job after i18n I intend to nationalize it to Brazilian
Portuguese.

=head2 In CheckAcls implement DENY for ACL operations

Along the lines of NFSv4 ACLs
(L<http://tools.ietf.org/html/rfc5661#section-6>). I'm thinking about
prefixing the what component with a '!'.

=head2 Implement equivalents for the L<SVN::Hooks> plugins

Currently we're missing UpdateConfFile. Actually, I'm thinking that
UpdateConfFile is too much specific. Perhaps something along the lines of
this post-update hook would be more interesting:
L<http://stackoverflow.com/questions/279169/deploy-a-project-using-git-push>.

=head2 In CheckLog allow for stop words

C<CheckLog.spelling> should have a way to register stop words. I'd
have to ask for a change in Text::SpellChecker.

=head2 CheckLog should check the footer of the commit log message

The Gerrit default C<commit-msg> implements some checks that could be
used here. Some other things to check:

=over

=item Require Signed-off-by lines
(L<https://github.com/icefox/git-hooks/blob/master/git_hooks/commit-msg/signed-off-by>)

=item Duplicate Signed-off-by lines
(L<https://github.com/icefox/git-hooks/blob/master/contrib/commit-msg/duplicate-signedoffby>)

=back

=head2 Turn t/test-functions.pl into a module

Idea provided by Skye Shaw to make its functions usable by third-party
plugins. Something like Git::Hooks::Test.

=head2 pre-commit or pre-push

It would be nice to let the user decide in which of these two hooks he'd
like to have his checks run. The idea would be to have a (default and
per-plugin) configuration option called C<*.hook> accepting the options
C<pre-commit> and C<pre-push> (defaulting for the former). This way the user
would be able to make his checks run on any one of the hooks.

=head2 Use the post-rewrite hook in CheckRewrite

The CheckRewrite plugin was written without resort to the post-rewrite hook,
which I think was implemented later. It seems that it would make the
implementation easier and more efficient. I would still use the pre-rebase
hook to detect unsafe rebases before they're done, however there should
exist an option to choose to postpone the check to after the rebase.

The pre-commit and post-commit hooks would be replaced by the post-rewrite
though.

=head2 Use Test::Requires::Git in the test suite

=head2 Think (again) about substituting Git::Repository for the Git module

The Git::Repository module seems to be better maintained than the standard
Git module. In the past I chose the latter mainly because it was
faster. However, I'd like to review them again.

=head1 AUTHOR

Gustavo L. de M. Chaves <gnustavo@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by CPqD <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.

=cut
