The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

git-lint - lint git commits and messages

SYNOPSIS

 git-lint [--check commit] [--check message <message_file>]
          [--profile <name>]
          [--version] [--help]

DESCRIPTION

git-lint is the commandline interface to Git::Lint, a pluggable framework for linting git commits and messages.

OPTIONS

--check

Run either check type commit or message.

If check type is message, git-lint expects the file path of the commit message to check as an unnamed option.

 git-lint --check message message_file
--profile

Run a specific profile of check modules.

Defaults to the 'default' profile.

--version

Print the version.

--help

Print the help menu.

CHECK MODES

git-lint has 2 check modes, commit and message.

commit

The commit check mode checks each line of the commit diff for issues defined in the commit check modules.

message

The message check mode checks the commit message for issues defined in the message check modules.

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