A tooling/language agnostic utility to lint Git commit message against the Conventional Commits specification.
Conventional Commits Linter operates directly on a Git repository, the Git environment variables are respected.
With the environment variable GIT_DIR
unset, Conventional Commits Linter will search for a Git repository starting in the current directory.
Using either the argument --from-commit-hash
or --from-tag
will note the start of the range of commits till HEAD to lint. The range is inclusive of HEAD and exclusive of the initial commit.
All commit messages in the range are linted against the Conventional Commits v1.0.0 specification. If any commits messages fail linting then an error message explaining why is logged and Conventional Commits Linter exits with a non zero exit code.
| Flag | |
|---------------------------|-|
| --allow-angular-type-only | Allow the Conventional Commits type to only be (build
, ci
, docs
, feat
, fix
, perf
, refactor
, style
, test
, revert
), otherwise linting for the commit will fail. |
The crates pretty_env_logger
and log
are used to provide logging.
The environment variable RUST_LOG
can be used to set the logging level.
See https://crates.io/crates/prettyenvlogger for more detailed documentation.
Checkout the code repository locally, change into the repository's directory and then build via cargo.
Using the --release
flag produces an optimised binary but takes longer to compile.
git clone git@gitlab.com:DeveloperC/conventional_commits_linter.git
cd conventional_commits_linter/
cargo build --release
The compiled binary is present in target/release/conventional_commits_linter
.
Cargo is the Rust package manager, using the install
sub-command it pulls the crate from crates.io
and then compiles the binary locally.
cargo install
places the produced binary at $HOME/.cargo/bin/conventional_commits_linter
.
cargo install conventional_commits_linter
The unit test suite has a number parameterised tests testing the Conventional Commits v1.0.0 linting, cargo can be used to setup and run all the unit tests.
cargo test
To ensure correctness as there are a variety of out of process dependencies the project has an End-to-End behaviour driven test suite using the behave framework (https://github.com/behave/behave). To run the test suite you need to first build a binary, install Python3, install behave and then execute behave to run the behaviour driven test suite.
target/debug/conventional_commits_linter
.
cargo build
cd end-to-end-tests/
virtualenv -p python3 .venv
source .venv/bin/activate
pip3 install -r requirements.txt
behave
To report a bug/issue or request a new feature use https://gitlab.com/DeveloperC/conventionalcommitslinter/-/issues.