NAME
Git::MoreHooks::CheckIndent - Check committed files for problems with indentation.
VERSION
version 0.004
SYNOPSIS
Use package via Git::Hooks interface (git config file).
DESCRIPTION
This plugin allows user to enforce policies on the committed files. It can define allowed indentation characters (space/tab/both), tab width (1, 2, 3, 4, [..] characters) and on which files or file types to apply which rules.
STATUS
Package Git::MoreHooks is currently being developed so changes in the existing hooks are possible.
USAGE
To enable CheckIndent plugin, you need to add it to the githooks.plugin configuration option:
git config --add githooks.plugin CheckIndent
Git::Hooks::CheckIndent plugin hooks itself to the hooks below:
pre-commit
This hook is invoked during the commit.
update
This hook is invoked multiple times in the remote repository during
git push
, once per branch being updated.pre-receive
This hook is invoked once in the remote repository during
git push
.ref-update
This hook is invoked when a push request is received by Gerrit Code Review.
patchset-created
This hook is invoked when a push request is received by Gerrit Code Review for a virtual branch (refs/for/*).
draft-published
The draft-published hook is executed when the user publishes a draft change, making it visible to other users.
CONFIGURATION
This plugin is configured by the following git options.
githooks.checkindent.file REGEXP PARAMETERS
A regular expressions matches against the file name. If config has several file items they are used in their order of appearance until a match is found. When a match is found, the parameters are applied to check the file.
Parameters are indent-char (allowed values: space
, tab
, both
) and indent-size (allowed content: an integer number).
file = ^proj1/old/.* indent-char:both indent-size:2
file = \.(c|h|cpp|hpp)$ indent-char:tab
file = \.py$ indent-char:space indent-size:4
N.B. The file name is a regular expression which will be matched against the whole path of the file. The file name is not a File::Glob pattern (like Git::Hooks::CheckFile uses).
EXPORTS
This module exports the following routines that can be used directly without using all of Git::Hooks infrastructure.
check_commit_at_client GIT
This is the routine used to implement the pre-commit
hook. It needs a Git::More
object.
check_commit_at_server GIT, COMMIT
This is the routine used to implement the pre-commit
hook. It needs a Git::More
object and a commit hash from Git::More::get_commit()
.
check_affected_refs GIT
This is the routing used to implement the update
and the pre-receive
hooks. It needs a Git::More
object.
check_patchset GIT, HASH
This is the routine used to implement the patchset-created
Gerrit hook. It needs a Git::More
object and the hash containing the arguments passed to the hook by Gerrit.
NOTES
Thanks go to Gustavo Leite de Mendonça Chaves for his Git::Hooks package.
SUBROUTINES/METHODS
AUTHOR
'Mikko Koivunalho <mikko.koivunalho@iki.fi>'
COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Mikko Koivunalho.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.