Skip to content
/ git-sumi Public

The non-opinionated Rust-based commit message linter.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

welpo/git-sumi

git-sumi logo: a lantern held on a bamboo stick over the sea

Clean commits PRs welcome Crates.io downloads GitHub release Chocolatey Crates.io PyPI Codecov MIT or Apache 2.0 License CI Deployment Documentation Average time to resolve an issue Percentage of issues still open

git-sumi

The non-opinionated Rust-based commit message linter

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:

git-sumi_demo.mp4

✨ 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:

cargo install git-sumi
# or use pip
pip install git-sumi  # or pipx install git-sumi
# or use chocolatey on 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.