# 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.12.4
=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