This project is a configurable commit-msg hook. You can either configure using a global configuration file of a repository configuration file. If both exist, repository file will be merged into global configuration file.
The global configuration file is located in the HOME directory of the user and named .commit-hook.yaml
while the repository specific file is in the root of the repository and named .commit-hook.yaml
.
Both files have the same structure.
---
version: 2 # version of config file
subject-line-length: 50 # Length of the subject line at a maximum
body-required: false # Is a body required for a commit
separate-body: true # Should the body be separated by a blank line
body-line-length: 72 # Maximum length of body lines
enforce-body-line-length: true # Should too long body lines be treated as an error or as a warning
lint_gitlab_ci: true # If true this calls out to lint .gitlab-ci.yml files
gitlab_ci_file: relativePath # Set a different CI file location
confd-directories # Specify whether .commit-msg.d directory is used
ignore: # a list of regular expressions to ignore lines (no check)
- ^#.* # ignore comments
subject: # Match the subject against those expressions
- name: ensure tagging of subject # Name of rule
expression: ^[a-z]+(\([a-z]+\))?:.*[^\.]$ # have feat(web): bla match, no . at the end allowed
severity: error # on error fail commit, else print with severity attached
occurs: # Match somewhere, check for existence
- TICKET-[0-9]+ # have a TICKET-1 as a match
external-tools: # external tools to run before accepting commit
- severity: error # on error fail commit, else print with severity attached
name: linter # name of rule
command: # command to execute
- make
- lint
Put the binary into your path. If you want to use GitLab CI linting you need to use: https://gitlab.com/orobardet/gitlab-ci-linter
The application has a helper to install the hook:
git-hook-commit install
You need to run this in the root of your project ( the folder containing the .git
folder ). If there is an existing hook you have to force it ( -f
).
Similar to the installation process, there is an uninstall helper:
git-hook-commit uninstall
Essentially this just removes the hook, so it would remove any other hook also. So be careful.
Version | Description |
---|---|
1.1.0 | Add support for conf.d directory |
1.0.1 | better gitlab ci handling |
1.0.0 | update to use go modules |
0.9.0 | add support for GitLab CI linter |
fix a bug where body lines where multiplied by the number of ignore expressions | |
0.8.0 | add support for Co-authored-by |
0.7.0 | rename binary |
0.6.2 | code quality improvements |
0.6.1 | code quality improvements |
0.6.0 | remove v1 |
run external tools | |
fix: version check | |
0.5.0 | version 2 of configuration |
Naming of rules | |
Severity for rules | |
0.4.0 | add version to config file |
0.3.1 | integration with code quality tools |
0.3.0 | print version information |
0.2.0 | configuration file is now named .commit-hook.yaml |
fix: project configuration now correctly located in repository root | |
fix: run subject line length | |
0.1.0 | Initial version |