git-sumi 0.2.0

Non-opinionated commit message linter
Documentation

sumi (墨, /sɯmi/): ink, especially the type used in traditional ink wash painting.

🎥 Demo

See how git-sumi can help you write better commit messages:

https://github.com/welpo/git-sumi/assets/6399341/cf1b4f00-3f79-454f-a533-5b36812dd464

✨ Main features

  • Customizable rules: Configure rules to enforce Conventional Commits, length limits, Gitmoji usage, and more.

  • Clear error reporting: Provides detailed error reporting, making fixing commit messages straightforward and educational.

  • Seamless integration: As a single binary, git-sumi easily integrates into your existing workflow with minimal setup. You can even use the GitHub Action to lint your commits (or PR titles) without installing anything.

🚀 Quick start

Install git-sumi:

# From cargo.
cargo install git-sumi

# From pip.
uv tool install git-sumi
pipx install git-sumi
pip install git-sumi

# Chocolatey (Windows).
choco install git-sumi

Create a base sumi.toml configuration file in your repository:

git sumi --init

Edit sumi.toml with your project's rules:

# Rule: Use the imperative mood in the description.
# Example: 'Fix bug' instead of 'Fixed bug'.
imperative = true

# Rule: Body line length limit.
# A value of 0 disables the rule.
max_body_length = 74

# Rule: No leading, trailing, or consecutive spaces.
whitespace = true

Set up automatic commit message validation:

git sumi --init commit-msg

Before each commit, git-sumi will lint your commit message. If it doesn't meet your project's rules, you'll see an error message and the commit will be aborted.

📝 Documentation

Learn how to use git-sumi from the documentation.

👥 Contributing

Please do! Contributions are always welcome. We appreciate improvements to the documentation, development of new rules, code cleanup, resolving issues, requesting or developing new functionality…

Take a look at our Contributing Guidelines for more information on how to get started.

📄 License

This project is licensed under the terms of both the MIT license and the Apache License (Version 2.0), at your option.