* Devise and implement a way for the plugins to register their configuration options and a suitable routine in Git::Hooks to grok them all. This would simplify plugin option processing. * Implement the examples in https://github.com/schacon/githooks. * Perhaps implement a kind of DENY for ACL operations, along the lines of NFSv4 ACLs (http://tools.ietf.org/html/rfc5661#section-6). I'm thinking about prefixing the what component with a '!'. * Implement equivalents for the following SVN::Hooks (http://search.cpan.org/dist/SVN-Hooks/) plugins: DenyFilenames, 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: http://stackoverflow.com/questions/279169/deploy-a-project-using-git-push. * Let the user tell which configuration files Git::Hooks should consider. Currently it considers the three default ones (system, global, and local), without knowing which one sets what. Perhaps we could have a new option "githooks.extra_config" that could be set with an array of filenames to invoke "git config --file" with in succession. This option, if set in the default configuration files, could tell Git::Hooks to grok an extra set of configuration from specific files. * CheckLog.spelling should have a way to register stopwords. I'd have to ask for a change in Text::SpellChecker. * CheckLog should check the footer of the commit log message. The Gerrit default commit-msg implements some checks that could be used here. Some other things to check: ** Require Signed-off-by lines (https://github.com/icefox/git-hooks/blob/master/git_hooks/commit-msg/signed-off-by) ** Duplicate Signed-off-by lines (https://github.com/icefox/git-hooks/blob/master/contrib/commit-msg/duplicate-signedoffby) * Implement a hook to make it easy to perform some checks on added/modified files. For instance, Perl files should be syntax checked. This could be configured somewhat like this: CheckFile.rule "\.p[lm]$ perl -c" The first 'word' in the value would be a regexp used to match the files we're interested in. All that follows would be a command to which the filename would be passed. This would allow for all kinds of checks specific for some kinds of files. Some interesting ideas here: http://tech.yipit.com/2011/11/16/183772396/. * Implement a hook to check the safety of rewrites, by detecting when we're ammending or rebasing commits that have already been pushed. Some discussions about this: ** http://git.661346.n2.nabble.com/pre-rebase-safety-hook-td1614613.html ** http://git.apache.org/xmlbeans.git/hooks/pre-rebase.sample ** http://www.mentby.com/Group/git/rfc-pre-rebase-refuse-to-rewrite-commits-that-are-reachable-from-upstream.html ** http://git.661346.n2.nabble.com/RFD-Rewriting-safety-warn-before-when-rewriting-published-history-td7254708.html