Conventional Commits
Using the Conventional Commits specification
Format of the commit message
<type>(optional scope): description
optional body
optional footer(s)
Add either a !
before the :
or a footer BREAKING CHANGE:
to trigger a major version bump.
Types
build |
Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) |
ci |
Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) |
chore |
Other changes that don’t modify src or test files |
docs |
Documentation only changes |
feat |
A new feature |
fix |
A bug fix |
perf |
A code change that improves performance |
refactor |
A code change that neither fixes a bug nor adds a feature |
revert |
Reverts a previous commit |
style |
Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) |
test |
Adding missing tests or correcting existing tests |
Components
Tools used as part of this approach.
Commitlint
Commitlint is a tool to check commit messages for "conventional commit" formattting.
Standard-version
Standard-version is a utility to generate a release on a branch.
It will create/update a CHANGELOG.md file, and list notable commits from the git history.
The utility only runs on the local repository, so nothing is pushed, no PRs are created or merged. To further automate, release-please or semantic-release may be next steps. |
$ standard-version
$ standard-version --release-as 2..1.0
$ standard-version --prerelease
$ standard-version --prerelease alpha
Links to commit hashes on Github will be generated for the remote named origin
.
Link generation only works in the main checked out folder for a repository. It does not work in a checked out worktree folder. |
When running |
Local configuration
-
Added command
git-commitlint
andgit-standard-version
in~/bin
with default behaviour, also available as git subcommands. -
Added aliases
git cl
andgit rel
. -
Added a pre-push script under
~/.config/git/hooks
. Set the hooksPath for a local repository to use these standard scripts.$ git config core.hooksPath /home/rolf/.config/git/hooks