## flowtool-githooks

Some functionality to use granular git hooks.

The main concept behind flowtool-githooks is, that instead of running one single hook script the package will ‘run’ a directory instead. The directory will be created right next to where the hook is in .git/hooks and it has the name of the hook plus .d. So for example the directory for the pre-commit hook is .git/hooks/pre-commit.d right next to the hook script: .git/hooks/pre-commit

flowtool-githooks ships the runner script and adds some commands to manage the content of the hook directories.

Scripts inside the hooks directory, .git/hooks/pre-commit.d and .git/hooks/commit-msg.d currently, are only executed, if the are executable. This is an old way of activating and deactivating the scripts by the management command.

## Installation

Currently the flowtool-githooks package contains only the runner and the management commands. To get some pre configured hooks check the [flowtool-githooks-demo](https://github.com/isnok/py-flowlib/tree/master/hooks-demo) package, and (for python-related hooks) [flowtool-python](https://github.com/isnok/py-flowlib/tree/master/pythonic).

Once you have flowtool-githooks and it’s requirements installed, you can run

shell flowtool githooks-install # install the runner (asks before overwriting anything)

from inside a git repository to install the hooks. When they are installed, they can be configred interactively by running

shell flowtool githooks-config # interactively configure git hooks (needs other hook-pkgs also)

And you can also just get the status of githooks in the current repo:

shell flowtool githooks-status

## Custom hook scripts

Currently it is better supported to create symlinks in the hook directory. To introduce arbitrary scripts/executables as git hooks use the command:

shell $flowtool githooks-introduce --hook <hook_name> /path/to/file$ flowtool githooks-introduce --help # might be helpful as well

## More to come

There is also a small library of “discovery functions” contained in this package. It is used by some hook scripts to find files to take care of.

## Project details

Uploaded 3 5