An open API service indexing awesome lists of open source software.

https://github.com/welpo/git-sumi

The non-opinionated Rust-based commit message linter.
https://github.com/welpo/git-sumi

cli commit-messages conventional-commits conventional-commits-parser conventions git lint linter non-opinionated rust rust-cli

Last synced: 2 months ago
JSON representation

The non-opinionated Rust-based commit message linter.

Awesome Lists containing this project

README

          



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


Documentation |
Website

git-sumi

The non-opinionated Rust-based commit message linter

> sumi (墨, /sɯmi/): ink, especially the type used in [traditional ink wash painting](https://en.wikipedia.org/wiki/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](https://www.conventionalcommits.org/), length limits, [Gitmoji](https://gitmoji.dev/) usage, and [more](https://sumi.rs/docs/rules).

- **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](https://github.com/welpo/git-sumi-action) to lint your commits (or PR titles) without installing anything.

## 🚀 Quick start

Install git-sumi:

```bash
# 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:

```bash
git sumi --init
```

Edit `sumi.toml` with your project's rules:

```toml
# 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:

```bash
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](https://sumi.rs/docs).

- [Quick setup](https://sumi.rs/docs/#quickstart)
- [Configuration](https://sumi.rs/docs/configuration)
- [Rules](https://sumi.rs/docs/rules)
- [Examples](https://sumi.rs/docs/examples)
- [Integration](https://sumi.rs/docs/integration)
- [Frequently Asked Questions](https://sumi.rs/docs/faq)

## 👥 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](/CONTRIBUTING.md) for more information on how to get started.

## 📄 License

This project is licensed under the terms of both the [MIT license](/LICENSE-MIT) and the [Apache License (Version 2.0)](/LICENSE-APACHE), at your option.