commit-check


Namecommit-check JSON
Version 0.9.4 PyPI version JSON
download
home_pageNone
SummaryCheck commit message formatting, branch naming, commit author, email, and more.
upload_time2025-02-23 17:05:15
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT License
keywords commit conventions conventional commits conventional branch branch naming commit-check message lint message devops
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Commit Check
============

.. |pypi-version| image:: https://img.shields.io/pypi/v/commit-check?logo=python&logoColor=white
    :target: https://pypi.org/project/commit-check/
    :alt: PyPI

.. |ci-badge| image:: https://github.com/commit-check/commit-check/actions/workflows/main.yml/badge.svg
    :target: https://github.com/commit-check/commit-check/actions/workflows/main.yml
    :alt: CI

.. |sonar-badge| image:: https://sonarcloud.io/api/project_badges/measure?project=commit-check_commit-check&metric=alert_status
    :target: https://sonarcloud.io/summary/new_code?id=commit-check_commit-check
    :alt: Quality Gate Status

.. |codecov-badge| image:: https://codecov.io/gh/commit-check/commit-check/branch/main/graph/badge.svg?token=GC2U5V5ZRT
    :target: https://codecov.io/gh/commit-check/commit-check
    :alt: CodeCov

.. |commit-check-badge| image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white
    :target: https://github.com/commit-check/commit-check
    :alt: commit-check

.. |slsa-badge| image:: https://slsa.dev/images/gh-badge-level3.svg
    :target: https://slsa.dev
    :alt: SLSA

|pypi-version| |ci-badge| |sonar-badge| |codecov-badge| |commit-check-badge| |slsa-badge|

Overview
--------

**Commit Check** is a free, powerful tool that enforces commit metadata standards, including commit message, branch naming, committer name/email, commit signoff and more.

Fully customizable with error messages and suggested commands, it ensures compliance across teams.

As an alternative to GitHub Enterprise `Metadata restrictions <https://docs.github.com/en/enterprise-server@3.11/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#metadata-restrictions>`_ and Bitbucket's paid plugin `Yet Another Commit Checker <https://marketplace.atlassian.com/apps/1211854/yet-another-commit-checker?tab=overview&hosting=datacenter>`_, Commit Check stands out by integrating DevOps principles and Infrastructure as Code (IaC).

Configuration
-------------

Use Default Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~

- If you don't set ``.commit-check.yml``, Commit Check will use the `default configuration <https://github.com/commit-check/commit-check/blob/main/commit_check/__init__.py>`_.

- The commit message will follow the rules of `Conventional Commits <https://www.conventionalcommits.org/en/v1.0.0/#summary>`_,
  branch naming follow the rules of `Conventional Branch <https://conventional-branch.github.io/#summary>`_.

Use Custom Configuration
~~~~~~~~~~~~~~~~~~~~~~~~

Create a config file ``.commit-check.yml`` under your repository's root directory, e.g., `.commit-check.yml <https://github.com/commit-check/commit-check/blob/main/.commit-check.yml>`_

Usage
-----

Running as GitHub Action
~~~~~~~~~~~~~~~~~~~~~~~~

Please see `commit-check/commit-check-action <https://github.com/commit-check/commit-check-action>`_

Running as pre-commit hook
~~~~~~~~~~~~~~~~~~~~~~~~~~

.. tip::

    Make sure ``pre-commit`` is `installed <https://pre-commit.com/#install>`_.

.. code-block:: yaml

    -   repo: https://github.com/commit-check/commit-check
        rev: the tag or revision
        hooks: # support hooks
        -   id: check-message  # requires prepare-commit-msg hook
        -   id: check-branch
        -   id: check-author-name
        -   id: check-author-email
        -   id: check-commit-signoff
        -   id: check-merge-base # requires download all git history

Running as CLI
~~~~~~~~~~~~~~

Install globally

.. code-block:: bash

    sudo pip3 install -U commit-check

Install locally

.. code-block:: bash

    pip install -U commit-check

Install from source code

.. code-block:: bash

    pip install git+https://github.com/commit-check/commit-check.git@main

Then, run ``commit-check --help`` from the command line. For more information, see the `docs <https://commit-check.github.io/commit-check/cli_args.html>`_.

Running as Git Hooks
~~~~~~~~~~~~~~~~~~~~

To configure the hook, create a script file in the ``.git/hooks/`` directory.

.. code-block:: bash

    #!/bin/sh
    commit-check --message --branch --author-name --author-email --commit-signoff --merge-base

Save the script file as ``pre-push`` and make it executable:

.. code-block:: bash

    chmod +x .git/hooks/pre-push

Now, ``git push`` will trigger this hook automatically.

Examples
--------

Check Commit Message Failed

.. code-block:: text

    Commit rejected by Commit-Check.

      (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)
       / ._. \      / ._. \      / ._. \      / ._. \      / ._. \
     __\( C )/__  __\( H )/__  __\( E )/__  __\( C )/__  __\( K )/__
    (_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
       || E ||      || R ||      || R ||      || O ||      || R ||
     _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._
    (.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)
     `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´

    Type message check failed => my test commit message
    It doesn't match regex: ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)

    The commit message should be structured as follows:

    <type>[optional scope]: <description>
    [optional body]
    [optional footer(s)]

    More details please refer to https://www.conventionalcommits.org
    Suggest: please check your commit message whether matches above regex


Check Branch Naming Failed

.. code-block:: text

    Commit rejected by Commit-Check.

    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)
    / ._. \      / ._. \      / ._. \      / ._. \      / ._. \
    __\( C )/__  __\( H )/__  __\( E )/__  __\( C )/__  __\( K )/__
    (_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
    || E ||      || R ||      || R ||      || O ||      || R ||
    _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._
    (.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)
    `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´

    Commit rejected.

    Type branch check failed => patch-1
    It doesn't match regex: ^(bugfix|feature|release|hotfix|task|chore)\/.+|(master)|(main)|(HEAD)|(PR-.+)
    Branches must begin with these types: bugfix/ feature/ release/ hotfix/ task/ chore/
    Suggest: run command `git checkout -b type/branch_name`


Check Commit Signature Failed

.. code-block:: text

    Commit rejected by Commit-Check.

    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)
    / ._. \      / ._. \      / ._. \      / ._. \      / ._. \
    __\( C )/__  __\( H )/__  __\( E )/__  __\( C )/__  __\( K )/__
    (_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
    || E ||      || R ||      || R ||      || O ||      || R ||
    _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._
    (.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)
    `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´

    Commit rejected.

    Type commit_signoff check failed => c92ce259ff041c91859c7fb61afdbb391e769d0f
    It doesn't match regex: Signed-off-by:.*[A-Za-z0-9]\s+<.+@.+>
    Signed-off-by not found in latest commit
    Suggest: run command `git commit -m "conventional commit message" --signoff`



Badging your repository
-----------------------

You can add a badge to your repository to show that you use commit-check!

.. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white
    :target: https://github.com/commit-check/commit-check
    :alt: commit-check

Markdown

.. code-block:: text

    [![commit-check](https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white)](https://github.com/commit-check/commit-check)

reStructuredText

.. code-block:: text

    .. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white
        :target: https://github.com/commit-check/commit-check
        :alt: commit-check


Versioning
----------

Versioning follows `Semantic Versioning <https://semver.org/>`_.

Have question or feedback?
--------------------------

Please post to `issues <https://github.com/commit-check/commit-check/issues>`_ for feedback, feature requests, or bug reports.

License
-------

This project is released under the `MIT License <https://github.com/commit-check/commit-check/blob/main/LICENSE>`_

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "commit-check",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "commit conventions, conventional commits, conventional branch, branch naming, commit-check, message, lint message, devops",
    "author": null,
    "author_email": "Xianpeng Shen <xianpeng.shen@gmail.com>",
    "download_url": null,
    "platform": null,
    "description": "Commit Check\n============\n\n.. |pypi-version| image:: https://img.shields.io/pypi/v/commit-check?logo=python&logoColor=white\n    :target: https://pypi.org/project/commit-check/\n    :alt: PyPI\n\n.. |ci-badge| image:: https://github.com/commit-check/commit-check/actions/workflows/main.yml/badge.svg\n    :target: https://github.com/commit-check/commit-check/actions/workflows/main.yml\n    :alt: CI\n\n.. |sonar-badge| image:: https://sonarcloud.io/api/project_badges/measure?project=commit-check_commit-check&metric=alert_status\n    :target: https://sonarcloud.io/summary/new_code?id=commit-check_commit-check\n    :alt: Quality Gate Status\n\n.. |codecov-badge| image:: https://codecov.io/gh/commit-check/commit-check/branch/main/graph/badge.svg?token=GC2U5V5ZRT\n    :target: https://codecov.io/gh/commit-check/commit-check\n    :alt: CodeCov\n\n.. |commit-check-badge| image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white\n    :target: https://github.com/commit-check/commit-check\n    :alt: commit-check\n\n.. |slsa-badge| image:: https://slsa.dev/images/gh-badge-level3.svg\n    :target: https://slsa.dev\n    :alt: SLSA\n\n|pypi-version| |ci-badge| |sonar-badge| |codecov-badge| |commit-check-badge| |slsa-badge|\n\nOverview\n--------\n\n**Commit Check** is a free, powerful tool that enforces commit metadata standards, including commit message, branch naming, committer name/email, commit signoff and more.\n\nFully customizable with error messages and suggested commands, it ensures compliance across teams.\n\nAs an alternative to GitHub Enterprise `Metadata restrictions <https://docs.github.com/en/enterprise-server@3.11/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#metadata-restrictions>`_ and Bitbucket's paid plugin `Yet Another Commit Checker <https://marketplace.atlassian.com/apps/1211854/yet-another-commit-checker?tab=overview&hosting=datacenter>`_, Commit Check stands out by integrating DevOps principles and Infrastructure as Code (IaC).\n\nConfiguration\n-------------\n\nUse Default Configuration\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- If you don't set ``.commit-check.yml``, Commit Check will use the `default configuration <https://github.com/commit-check/commit-check/blob/main/commit_check/__init__.py>`_.\n\n- The commit message will follow the rules of `Conventional Commits <https://www.conventionalcommits.org/en/v1.0.0/#summary>`_,\n  branch naming follow the rules of `Conventional Branch <https://conventional-branch.github.io/#summary>`_.\n\nUse Custom Configuration\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nCreate a config file ``.commit-check.yml`` under your repository's root directory, e.g., `.commit-check.yml <https://github.com/commit-check/commit-check/blob/main/.commit-check.yml>`_\n\nUsage\n-----\n\nRunning as GitHub Action\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nPlease see `commit-check/commit-check-action <https://github.com/commit-check/commit-check-action>`_\n\nRunning as pre-commit hook\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. tip::\n\n    Make sure ``pre-commit`` is `installed <https://pre-commit.com/#install>`_.\n\n.. code-block:: yaml\n\n    -   repo: https://github.com/commit-check/commit-check\n        rev: the tag or revision\n        hooks: # support hooks\n        -   id: check-message  # requires prepare-commit-msg hook\n        -   id: check-branch\n        -   id: check-author-name\n        -   id: check-author-email\n        -   id: check-commit-signoff\n        -   id: check-merge-base # requires download all git history\n\nRunning as CLI\n~~~~~~~~~~~~~~\n\nInstall globally\n\n.. code-block:: bash\n\n    sudo pip3 install -U commit-check\n\nInstall locally\n\n.. code-block:: bash\n\n    pip install -U commit-check\n\nInstall from source code\n\n.. code-block:: bash\n\n    pip install git+https://github.com/commit-check/commit-check.git@main\n\nThen, run ``commit-check --help`` from the command line. For more information, see the `docs <https://commit-check.github.io/commit-check/cli_args.html>`_.\n\nRunning as Git Hooks\n~~~~~~~~~~~~~~~~~~~~\n\nTo configure the hook, create a script file in the ``.git/hooks/`` directory.\n\n.. code-block:: bash\n\n    #!/bin/sh\n    commit-check --message --branch --author-name --author-email --commit-signoff --merge-base\n\nSave the script file as ``pre-push`` and make it executable:\n\n.. code-block:: bash\n\n    chmod +x .git/hooks/pre-push\n\nNow, ``git push`` will trigger this hook automatically.\n\nExamples\n--------\n\nCheck Commit Message Failed\n\n.. code-block:: text\n\n    Commit rejected by Commit-Check.\n\n      (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)\n       / ._. \\      / ._. \\      / ._. \\      / ._. \\      / ._. \\\n     __\\( C )/__  __\\( H )/__  __\\( E )/__  __\\( C )/__  __\\( K )/__\n    (_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)\n       || E ||      || R ||      || R ||      || O ||      || R ||\n     _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._\n    (.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)\n     `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4\n\n    Type message check failed => my test commit message\n    It doesn't match regex: ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)\n\n    The commit message should be structured as follows:\n\n    <type>[optional scope]: <description>\n    [optional body]\n    [optional footer(s)]\n\n    More details please refer to https://www.conventionalcommits.org\n    Suggest: please check your commit message whether matches above regex\n\n\nCheck Branch Naming Failed\n\n.. code-block:: text\n\n    Commit rejected by Commit-Check.\n\n    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)\n    / ._. \\      / ._. \\      / ._. \\      / ._. \\      / ._. \\\n    __\\( C )/__  __\\( H )/__  __\\( E )/__  __\\( C )/__  __\\( K )/__\n    (_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)\n    || E ||      || R ||      || R ||      || O ||      || R ||\n    _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._\n    (.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)\n    `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4\n\n    Commit rejected.\n\n    Type branch check failed => patch-1\n    It doesn't match regex: ^(bugfix|feature|release|hotfix|task|chore)\\/.+|(master)|(main)|(HEAD)|(PR-.+)\n    Branches must begin with these types: bugfix/ feature/ release/ hotfix/ task/ chore/\n    Suggest: run command `git checkout -b type/branch_name`\n\n\nCheck Commit Signature Failed\n\n.. code-block:: text\n\n    Commit rejected by Commit-Check.\n\n    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)\n    / ._. \\      / ._. \\      / ._. \\      / ._. \\      / ._. \\\n    __\\( C )/__  __\\( H )/__  __\\( E )/__  __\\( C )/__  __\\( K )/__\n    (_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)(_.-/'-'\\-._)\n    || E ||      || R ||      || R ||      || O ||      || R ||\n    _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._\n    (.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)(.-./`-\u00b4\\.-.)\n    `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4  `-\u00b4     `-\u00b4\n\n    Commit rejected.\n\n    Type commit_signoff check failed => c92ce259ff041c91859c7fb61afdbb391e769d0f\n    It doesn't match regex: Signed-off-by:.*[A-Za-z0-9]\\s+<.+@.+>\n    Signed-off-by not found in latest commit\n    Suggest: run command `git commit -m \"conventional commit message\" --signoff`\n\n\n\nBadging your repository\n-----------------------\n\nYou can add a badge to your repository to show that you use commit-check!\n\n.. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white\n    :target: https://github.com/commit-check/commit-check\n    :alt: commit-check\n\nMarkdown\n\n.. code-block:: text\n\n    [![commit-check](https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white)](https://github.com/commit-check/commit-check)\n\nreStructuredText\n\n.. code-block:: text\n\n    .. image:: https://img.shields.io/badge/commit--check-enabled-brightgreen?logo=Git&logoColor=white\n        :target: https://github.com/commit-check/commit-check\n        :alt: commit-check\n\n\nVersioning\n----------\n\nVersioning follows `Semantic Versioning <https://semver.org/>`_.\n\nHave question or feedback?\n--------------------------\n\nPlease post to `issues <https://github.com/commit-check/commit-check/issues>`_ for feedback, feature requests, or bug reports.\n\nLicense\n-------\n\nThis project is released under the `MIT License <https://github.com/commit-check/commit-check/blob/main/LICENSE>`_\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Check commit message formatting, branch naming, commit author, email, and more.",
    "version": "0.9.4",
    "project_urls": {
        "source": "https://github.com/commit-check/commit-check",
        "tracker": "https://github.com/commit-check/commit-check/issues"
    },
    "split_keywords": [
        "commit conventions",
        " conventional commits",
        " conventional branch",
        " branch naming",
        " commit-check",
        " message",
        " lint message",
        " devops"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d6cd9f22aa10e4e99a78369efe8ccd506923ab6a08b983c20f97198cec025341",
                "md5": "f2c358d63430e0142bbc36367522bf6a",
                "sha256": "f03a6e914dd7b2ed082ac4b30f2b02bc113eecdefdf25fa88862258d01613dbc"
            },
            "downloads": -1,
            "filename": "commit_check-0.9.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f2c358d63430e0142bbc36367522bf6a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 12530,
            "upload_time": "2025-02-23T17:05:15",
            "upload_time_iso_8601": "2025-02-23T17:05:15.162549Z",
            "url": "https://files.pythonhosted.org/packages/d6/cd/9f22aa10e4e99a78369efe8ccd506923ab6a08b983c20f97198cec025341/commit_check-0.9.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-23 17:05:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "commit-check",
    "github_project": "commit-check",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "commit-check"
}
        
Elapsed time: 0.46367s