Lint your git!
$ ./gitlint --help
usage: gitlint [<flags>]
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
--path="." Path to the git repo (default: ".").
--subject-regex=".*" Commit subject line must conform to this regular expression (default: ".*").
--subject-maxlen=2147483646 Max length for commit subject line (default: math.MaxInt32 - 1).
--subject-minlen=0 Min length for commit subject line (default: 0).
--body-regex=".*" Commit message body must conform to this regular expression (default: ".*").
--body-maxlen=2147483646 Max length for commit body (default: math.MaxInt32 - 1)
--since="1970-01-01" A date in "yyyy-MM-dd" format starting from which commits will be analyzed (default: "1970-01-01").
--msg-file="" Only analyze the commit message found in this file (default: "").
--max-parents=1 Max number of parents a commit can have in order to be analyzed (default: 1). Useful for excluding merge commits.
--excl-author-names="$a" Don't lint commits with authors whose names match these comma-separated regular expressions (default: '$a').
--excl-author-emails="$a" Don't lint commits with authors whose emails match these comma-separated regular expressions (default: '$a').
Additionally, it will look for configurations in a file .gitlint
in the current directory if it exists. This file's format is just the same command line flags but each on a separate line. Flags passed through the command line take precedence.
Lint your commit message when committing to your local branch.
Add a commit-msg
hook to your Git repo:
- Create hook:
echo 'gitlint --msg-file=$1' > .git/hooks/commit-msg
- Make it executable:
chmod +x .git/hooks/commit-msg
Now your commits will be validated after saving and closing the commit message in your text editor.
To integrate it as GitHub action into CI pipeline use gitlint-action.
Use download-gitlint.sh
:
curl https://raw.githubusercontent.com/llorllale/go-gitlint/master/download-gitlint.sh > download-gitlint.sh
chmod +x download-gitlint.sh
Usage:
$ ./download-gitlint.sh -h
./download-gitlint.sh: download go binaries for llorllale/go-gitlint
Usage: ./download-gitlint.sh [-b] bindir [-d] [tag]
-b sets bindir or installation directory, Defaults to ./bin
-d turns on debug logging
[tag] is a tag from
https://github.com/marmotedu/go-gitlint/releases
If tag is missing, then the latest will be used.
Generated by godownloader
https://github.com/goreleaser/godownloader
gitlint
's exit code will equal the number of issues found with your commit(s).
- Validate format of commit message subject and body
- Lint commit msgs on varios development platforms (Windows, Linux, Mac)
- Configuration from file with cli args taking precedence
-
commit-msg
hook to validate my commit's msg - Performance (because a slow pre-commit hook would render the git workflow unmanageable)
- My first Go project :)
Fork this repo, make sure make checks
works, and then open a PR.
To run make checks
you will need Go 1.14.x
and Ruby 2.x
(for pdd
- see below).
Ruby Version Manager is highly recommended.
The make dependencies
recipe attempts to download and install the following:
- pdd
- golangci-lint v1.29.0
- weasel