Skip to main content

Check commit message formatting, branch naming, commit author, email, and more.

Project description

PyPI CI Quality Gate Status CodeCov commit-check

Overview

Check commit message formatting, branch naming, committer name, email, and more. Alternative to Yet Another Commit Checker.

  • requiring commit message to match regex

  • requiring branch naming to match regex

  • requiring committer name and email to match regex

  • customizing error message

  • customizing suggest command

Purpose

commit-check is a tool designed for teams.

Its main purpose is to standardize the format of commit message, branch naming, etc, and makes it possible to:

  • writing descriptive commit is easy to read

  • identify branch according to the branch type

  • triggering the specific types of commit/branch CI build

  • automatically generate changelogs

Configuration

Use custom configuration

Create a config file .commit-check.yml under your repository root directory, e.g. .commit-check.yml

Use default configuration

Usage

There are a variety of ways you can use commit-check as follows.

Running as GitHub Action

Please see commit-check/commit-check-action

Running as pre-commit hook

-   repo: https://github.com/commit-check/commit-check
    rev: the tag or revision
    hooks: # support hooks
    -   id: check-message
    -   id: check-branch
    -   id: check-author-name
    -   id: check-author-email

Running as CLI

Global installation

sudo pip3 install -U commit-check

User installation

pip install -U commit-check

Install from git repo

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

Then you can run commit-check command line. More about commit-check --help please see docs.

Running as Git Hooks

To configure the hook, you need to create a new script file in the .git/hooks/ directory of your Git repository.

Here is an example script that you can use to set up the hook:

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

Save the script file to pre-push and make it executable by running the following command:

chmod +x .git/hooks/pre-push

Then when you run git push command, this push hook will be run automatically.

Example

Check commit message failed

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 ||
 _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._  _.' '-' '._
(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)(.-./`-´\.-.)
 `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´  `-´     `-´

Invalid commit message => test
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

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.

Invalid branch name => test
It doesn't match regex: ^(bugfix|feature|release|hotfix|task)\/.+|(master)|(main)|(HEAD)|(PR-.+)

Branches must begin with these types: bugfix/ feature/ release/ hotfix/ task/
Suggest: run command `git checkout -b type/branch_name`

Badging your repository

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

commit-check

Markdown

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

reStructuredText

.. 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.

Have question or feedback?

To provide feedback (requesting a feature or reporting a bug) please post to issues.

License

This project is released under the MIT License

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

commit_check-0.5.5-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file commit_check-0.5.5-py3-none-any.whl.

File metadata

  • Download URL: commit_check-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for commit_check-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 eb62788ce20e29821d6f157cacdb77eb085a28bd996e93a088fd6b0163b98306
MD5 9c1d325e2f80707528f3899aa87a9e48
BLAKE2b-256 428daebba0921d342aa1099833ebc7a20595aca0e8a7d466df86ab9a337fb32b

See more details on using hashes here.

Supported by

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