A git commit message formatter written in Rust.
- Enforces subject line length (default: 50 chars)
- Wraps body lines (default: 72 chars)
- Preserves git comments and diffs
- Works seamlessly with editors like nvim
- Configurable via
.commitfmt.toml
cargo install commitfmt
Or build from source:
cargo install --path .
cat commit.txt | commitfmt
commitfmt COMMIT_EDITMSG
Add to your git config:
git config --global core.editor "nvim"
Then use with a git hook in .git/hooks/commit-msg
:
#!/bin/sh
commitfmt "$1"
Create .commitfmt.toml
in your project:
subject_max_length = 50
body_max_line_length = 72
- Subject lines longer than the max length have overflow words moved to the body
- Body lines longer than max are wrapped at word boundaries
- Lines starting with
#
(git comments/diffs) are preserved - Intentional line breaks in the body are maintained
MIT