46 lines
2 KiB
Markdown
46 lines
2 KiB
Markdown
# Automatically prepare message before commit
|
|
|
|
## About
|
|
|
|
It can be desirable to use commitizen for all types of commits (i.e. regular, merge,
|
|
squash) so that the complete git history adheres to the commit message convention
|
|
without ever having to call `cz commit`.
|
|
|
|
To automatically prepare a commit message prior to committing, you can
|
|
use a [prepare-commit-msg Git hook][prepare-commit-msg-docs]:
|
|
|
|
> This hook is invoked by git-commit right after preparing the
|
|
> default log message, and before the editor is started.
|
|
|
|
To automatically perform arbitrary cleanup steps after a successful commit you can use a
|
|
[post-commit Git hook][post-commit-docs]:
|
|
|
|
> This hook is invoked by git-commit. It takes no parameters, and is invoked after a
|
|
> commit is made.
|
|
|
|
A combination of these two hooks allows for enforcing the usage of commitizen so that
|
|
whenever a commit is about to be created, commitizen is used for creating the commit
|
|
message. Running `git commit` or `git commit -m "..."` for example, would trigger
|
|
commitizen and use the generated commit message for the commit.
|
|
|
|
## Installation
|
|
|
|
Copy the hooks from [here](https://github.com/commitizen-tools/commitizen/tree/master/hooks) into the `.git/hooks` folder and make them
|
|
executable by running the following commands from the root of your Git repository:
|
|
|
|
```bash
|
|
wget -O .git/hooks/prepare-commit-msg https://raw.githubusercontent.com/commitizen-tools/commitizen/master/hooks/prepare-commit-msg.py
|
|
chmod +x .git/hooks/prepare-commit-msg
|
|
wget -O .git/hooks/post-commit https://raw.githubusercontent.com/commitizen-tools/commitizen/master/hooks/post-commit.py
|
|
chmod +x .git/hooks/post-commit
|
|
```
|
|
|
|
## Features
|
|
|
|
- Commits can be created using both `cz commit` and the regular `git commit`
|
|
- The hooks automatically create a backup of the commit message that can be reused if
|
|
the commit failed
|
|
- The commit message backup can also be used via `cz commit --retry`
|
|
|
|
[post-commit-docs]: https://git-scm.com/docs/githooks#_post_commit
|
|
[prepare-commit-msg-docs]: https://git-scm.com/docs/githooks#_prepare_commit_msg
|