Skip to main content

A pre-commit hook to check Conventional Commits and add emojis.

Project description

🎉 Conventional Commits Check

PyPI Version License Last Commit Issues Stars Forks Downloads Contributors

Result Image

conventional-commits-check is a powerful and easy-to-use Python pre-commit hook that helps enforce Conventional Commits rules on your commit messages. It supports adding relevant emojis based on your commit types to enhance readability and bring some fun to your commit history! 🚀

📜 What are Conventional Commits?

Conventional Commits provide a lightweight convention for creating a clear and explicit commit history. By using this hook, you'll ensure that your commit messages follow this convention, making your versioning easier to manage and your collaboration more seamless.

💡 Features

  • ✅ Enforces Conventional Commits rules on your commit messages.
  • 🎨 Optionally adds context-specific emojis to the start of commit messages.
  • 🛑 Blocks commits that do not conform to the Conventional Commits standard.
  • 🔧 Allows for custom commit types and custom emojis via configuration.
  • 🔄 Auto-Merge Commit Handling: Automatically formats auto-merge commit messages to follow a consistent style.

🔄 Auto-Merge Commit Handling

The conventional-commits-check tool includes functionality to handle auto-merge commit messages. When a commit message matches the pattern "Merge branch '...' into '...'", it is automatically reformatted to a more consistent style, such as "merge: branch '...' into '...'". If emojis are enabled, a 🎉 emoji is prepended to the message. This feature ensures that even auto-generated commit messages maintain a clean and readable format.

🔧 Customization

You can customize the commit types and their associated emojis by modifying the commit_types.py and commits_check_config.yaml files. These files allow you to define additional commit types and specify emojis for each type.

Example : commit_types.py

commit_types = {
    "access": {
        "description": "Improve accessibility.",
        "emoji": "♿️"
    },
    "analytics": {
        "description": "Add or update analytics or track code.",
        "emoji": "📈"
    },
    "animation": {
        "description": "Add or update animations and transitions.",
        "emoji": "💫"
    },
    "arch": {
        "description": "Make architectural changes.",
        "emoji": "🏗️"
    },
    "assets": {
        "description": "Add or update assets.",
        "emoji": "🍱"
    },
    "beer": {
        "description": "Write code drunkenly.",
        "emoji": "🍻"
    },
    # ... more commit types ...
}

Customizing Existing Emojis

You can also modify the emojis for existing commit types by updating the commits_check_config.yaml:

additional_commit_types:
  feat:
    description: Introduce new features.
    emoji: 🎉
  fix:
    description: Fix a bug.
    emoji: 🛠️

⚙️ Installation

To add conventional-commits-check to your project, follow these steps:

  1. Update your .pre-commit-config.yaml:

    In your project’s root directory, add the following:

    repos:
      - repo: https://github.com/AliYmn/conventional-commits-check
        rev: v2.9.0  # Use the latest release version
        hooks:
          - id: conventional-commits-check
            stages: [commit-msg]
            args: ["--emoji-disabled"]  # Use this argument to disable emojis
    
  2. Install the pre-commit hook:

    pre-commit install --hook-type commit-msg -f
    
  3. Install the conventional-commits-check package:

    pip install -U conventional-commits-check
    
  4. Optional: Update the pre-commit package:

    pre-commit autoupdate
    

🚀 Usage

Once the hook is added, it will automatically run each time you make a commit. The hook checks your commit message against Conventional Commits rules, optionally adds the appropriate emoji, and prevents non-conforming commits.

👨‍💻 Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to enhance conventional-commits-check. Let’s make commits fun and consistent! 😄

📜 License

This project is licensed under the MIT License.


Enhance your workflow and bring some life to your commits with conventional-commits-check! 🎉✨🐛

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

conventional_commits_check-2.9.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

conventional_commits_check-2.9.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file conventional_commits_check-2.9.0.tar.gz.

File metadata

File hashes

Hashes for conventional_commits_check-2.9.0.tar.gz
Algorithm Hash digest
SHA256 6b58af0c424994ae63102715936bfc3027edc9a17d2017c19a1753da9250790c
MD5 77cd38a721d26b5814c52887cc441e8f
BLAKE2b-256 a9e3805339509a69f9e48d698c1860b39498808d2f6980172154152b8a2219c1

See more details on using hashes here.

File details

Details for the file conventional_commits_check-2.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for conventional_commits_check-2.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c2864cb3f6d9c921d0c035c3c45254bcb8d4a70c50bc531ef515032dea6178dc
MD5 dafb0fc639b98afc937188c8fbba2c7d
BLAKE2b-256 d0ca9354317f115714f410d8c3fd9e2c9a6e85f5b24d4ff24bad6d305f5975f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page