A way to do validation on git commits.
go install github.com/forkcloser/git-validation/cmd/git-validation@latestThe flags
$ git-validation --help
Usage: git-validation [flags]
A way to do validation on git commits.
Flags:
-h, --help Show context-sensitive help.
--range=STRING use this commit range instead (implies
--no-travis)
--list-rules list the rules registered
--run=STRING comma delimited list of rules to run. Defaults to
all.
-v, --verbose verbose
-D, --debug debug output
-q, --quiet less output
-d, --dir="." git directory to validate from
--no-github disables Github Actions environment checks (when
env GITHUB_ACTIONS=true is set)
--no-travis disables travis environment checks (when env
TRAVIS=true is set)
--[no-]travis-pr-only when on travis, only run validations if the
CI-Build is checking pull-request buildThe entire default rule set is run by default:
vbatts@valse ~/src/vb/git-validation (master) $ git-validation --list-rules
"dangling-whitespace" -- checking the presence of dangling whitespaces on line endings
"DCO" -- makes sure the commits are signed
"message_regexp" -- checks the commit message for a user provided regular expression
"short-subject" -- commit subjects are strictly less than 90 (github ellipsis length)Or, specify comma-delimited rules to run:
vbatts@valse ~/src/vb/git-validation (master) $ git-validation --run DCO,short-subject
* b243ca4 "README: adding install and usage" ... PASS
* d614ccf "*: run tests in a runner" ... PASS
* b9413c6 "shortsubject: add a subject length check" ... PASS
* 5e74abd "*: comments and golint" ... PASS
* 07a982f "git: add verbose output of the commands run" ... PASS
* 03bda4b "main: add filtering of rules to run" ... PASS
* c10ba9c "Initial commit" ... PASSVerbosity shows each rule's output:
vbatts@valse ~/src/vb/git-validation (master) $ git-validation -v
* d614ccf "*: run tests in a runner" ... PASS
- PASS - has a valid DCO
- PASS - commit subject is 72 characters or less! *yay*
* b9413c6 "shortsubject: add a subject length check" ... PASS
- PASS - has a valid DCO
- PASS - commit subject is 72 characters or less! *yay*
* 5e74abd "*: comments and golint" ... PASS
- PASS - has a valid DCO
- PASS - commit subject is 72 characters or less! *yay*
* 07a982f "git: add verbose output of the commands run" ... PASS
- PASS - has a valid DCO
- PASS - commit subject is 72 characters or less! *yay*
* 03bda4b "main: add filtering of rules to run" ... PASS
- PASS - has a valid DCO
- PASS - commit subject is 72 characters or less! *yay*
* c10ba9c "Initial commit" ... PASS
- PASS - has a valid DCO
- PASS - commit subject is 72 characters or less! *yay*Here's a failure:
vbatts@valse ~/src/vb/git-validation (master) $ git-validation
* 49f51a8 "README: adding install and usage" ... FAIL
- FAIL - does not have a valid DCO
* d614ccf "*: run tests in a runner" ... PASS
* b9413c6 "shortsubject: add a subject length check" ... PASS
* 5e74abd "*: comments and golint" ... PASS
* 07a982f "git: add verbose output of the commands run" ... PASS
* 03bda4b "main: add filtering of rules to run" ... PASS
* c10ba9c "Initial commit" ... PASS
1 issues to fix
vbatts@valse ~/src/vb/git-validation (master) $ echo $?
1Excluding paths that are out of the scope of your project:
vbatts@valse ~/src/vb/git-validation (master) $ GIT_CHECK_EXCLUDE="./vendor:./git/testdata" git-validation -q --run dangling-whitespace
...using the GIT_CHECK_EXCLUDE environment variable. Multiple paths should be separated by colon(:)
When making a change, verify it with:
go run mage.go lint vet build testDefault rules are added by registering them to the validate package.
Usually by putting them in their own package.
See ./rules/.
Feel free to contribute more.
Otherwise, by using validate package API directly, rules can be handed directly to the validate.Runner.