NAME
Git::Lint - lint git commits and messages
SYNOPSIS
use Git::Lint;
my $lint = Git::Lint->new();
$lint->run({ check => 'commit', profile => 'default' });
$lint->run({ check => 'message', file => 'file_path', profile => 'default' });
git-lint [--check commit] [--check message <message_file>]
[--profile <name>]
[--version] [--help]
DESCRIPTION
Git::Lint
is a pluggable framework for linting git commits and messages.
For the commandline interface to Git::Lint
, see the documentation for git-lint.
For adding check modules, see the documentation for Git::Lint::Check::Commit and Git::Lint::Check::Message.
CONSTRUCTOR
- new
-
Returns a reference to a new
Git::Lint
object.
METHODS
- run
-
Loads the check modules as defined by
profile
.run
expects the following arguments:profile
The name of a defined set of check modules to run.
check
Either
commit
ormessage
.file
If
check
ismessage
,file
is required. - config
-
Returns the Git::Lint::Config object created by
Git::Lint
.
INSTALLATION
To install Git::Lint
, download the latest release, then extract.
tar xzvf Git-Lint-0.008.tar.gz
cd Git-Lint-0.008
or clone the repo.
git clone https://github.com/renderorange/Git-Lint.git
cd Git-Lint
Generate the build and installation tooling.
perl Makefile.PL
Then build, test, and install.
make
make test && make install
Git::Lint
can also be installed using cpanm.
cpanm Git::Lint
CONFIGURATION
Configuration is done through git config
files (~/.gitconfig or /repo/.git/config).
Only one profile, default
, is defined internally. default
contains all check modules by default.
The default
profile can be overridden through git config
files (~/.gitconfig or /repo/.git/config).
To set the default profile to only run the Whitespace
commit check:
[lint "profiles.commit"]
default = Whitespace
Or set the default profile to Whitespace
and the fictional commit check, Flipdoozler
:
[lint "profiles.commit"]
default = Whitespace, Flipdoozler
Additional profiles can be added with a new name and list of checks to run.
[lint "profiles.commit"]
default = Whitespace, Flipdoozler
hardcore = Other, Module, Names
Message check profiles can also be defined.
[lint "profiles.message"]
# override the default profile to only contain SummaryLength, SummaryEndingPeriod, and BlankLineAfterSummary
default = SummaryLength, SummaryEndingPeriod, BlankLineAfterSummary
# create a summary profile with specific modules
summary = SummaryEndingPeriod, SummaryLength
An example configuration is provided in the examples
directory of this project.
ENABLING CHECKS FOR REPOS
To enable as a pre-commit
hook, copy the pre-commit
script from the example/hooks
directory into the .git/hooks
directory of the repo you want to check.
Once copied, update the path and options to match your path and preferred profile.
To enable as a commit-msg
hook, copy the commit-msg
script from the example/hooks
directory into the .git/hooks
directory of the repo you want to check.
COPYRIGHT AND LICENSE
Copyright (c) 2022 Blaine Motsinger under the MIT license.
AUTHOR
Blaine Motsinger blaine@renderorange.com