What’s New

This document highlights the major changes and improvements in each version of commit-check.

Version 2.5.0 — New Features

Co-author Bypass in ignore_authors

commit-check can now skip validation when a co-author of the commit matches an entry in ignore_authors, not just the primary commit author.

This is especially useful for AI-assisted workflows where a bot (e.g., coderabbitai[bot], copilot[bot]) co-authors a commit that does not follow Conventional Commits format:

[commit]
ignore_authors = ["dependabot[bot]", "renovate[bot]", "coderabbitai[bot]", "copilot[bot]"]

When a Co-authored-by: trailer in the commit message body matches any entry in the list, all commit checks are skipped for that commit.

Organization-Level Config Inheritance (inherit_from)

Teams can now share a centralized base configuration across all repositories in an organization using the new inherit_from top-level key.

# .github/cchk.toml — in every repo
inherit_from = "github:my-org/.github:cchk.toml"

[commit]
subject_max_length = 72  # Local override

Supported source formats:

  • github:owner/repo:path/to/cchk.toml — fetches from the default branch via raw.githubusercontent.com

  • github:owner/repo@main:path/to/cchk.toml — pins to a specific branch, tag, or SHA

  • A local file path (relative or absolute)

  • An HTTPS URL

Local settings always override the inherited configuration. HTTP (non-TLS) URLs are rejected for security. If the source is unreachable, the local config is used as-is.

Git Config Author Validation

Author name and email validation now checks ``git config user.name`` / ``user.email`` first — the identity that will be used for the next commit — and falls back to the last commit’s author only if git config is unset.

Previously, a developer with a misconfigured user.name (e.g., starting with a digit) would pass validation as long as their most recent commit had a valid author name. This fix closes that gap.

Version 2.0.0 - Major Release

Version 2.0.0 represents a complete architectural overhaul of commit-check, introducing significant improvements in configuration, usability, and maintainability.

Overview

The most significant change in v2.0.0 is the transition from YAML to TOML configuration format, along with a complete redesign of the validation engine using SOLID principles.

Key Benefits:

  • Simplified Configuration: More intuitive TOML syntax

  • Better Defaults: Sensible out-of-the-box behavior

  • Enhanced Validation: Built-in support for Conventional Commits and Conventional Branches

  • Improved Architecture: Modular, maintainable codebase

  • Better Documentation: Comprehensive guides and examples

Documentation & Migration

Configuration Format Migration

The configuration format has changed from YAML to TOML, providing better readability and easier maintenance.

Format Comparison:

Feature

YAML (v1.x)

TOML (v2.0+)

Syntax

Complex nested structure

Simple key-value pairs

Validation

Custom regex patterns

Built-in conventional standards

Configuration

.commit-check.yml

cchk.toml or commit-check.toml

Maintainability

Manual regex maintenance

Standardized patterns

Configuration Examples

Below are side-by-side comparisons showing how common configurations translate from v1.x to v2.0+.

Commit Message Validation

Transform complex regex patterns into simple, standardized configuration.

Before (YAML v1.x):

checks:
  - check: message
    regex: '^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)|(Merge).*|(fixup!.*)'
    error: "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"
    suggest: please check your commit message whether matches above regex

After (TOML v2.0+):

[commit]
conventional_commits = true
allow_commit_types = ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "style", "test"]

Benefits: No more complex regex patterns, built-in Conventional Commits support, clearer configuration.

Branch Naming Validation

Standardize branch naming with conventional patterns.

Before (YAML v1.x):

checks:
  - check: branch
    regex: ^(bugfix|feature|release|hotfix|task|chore)\/.+|(master)|(main)|(HEAD)|(PR-.+)
    error: "Branches must begin with these types: bugfix/ feature/ release/ hotfix/ task/ chore/"
    suggest: run command `git checkout -b type/branch_name`

After (TOML v2.0+):

[branch]
conventional_branch = true
allow_branch_types = ["bugfix", "feature", "release", "hotfix", "task", "chore"]

Benefits: Built-in Conventional Branch support, automatic handling of special branches (main, master, HEAD, PR-*).

Author Validation

Flexible author validation with allow/ignore lists.

Before (YAML v1.x):

checks:
  - check: author_name
    regex: ^[A-Za-zÀ-ÖØ-öø-ÿ\u0100-\u017F\u0180-\u024F ,.\'-]+$|.*(\[bot])
    error: The committer name seems invalid
    suggest: run command `git config user.name "Your Name"`

After (TOML v2.0+):

[commit]
# Built-in validation with sensible defaults for author name/email
# Optional: ignore specific authors (e.g., bots)
ignore_authors = ["dependabot[bot]", "renovate[bot]"]

Benefits: Built-in validation patterns, flexible ignore lists, automatic bot detection.

Signed-off-by Requirements

Simple boolean flag for DCO compliance.

Before (YAML v1.x):

checks:
  - check: commit_signoff
    regex: Signed-off-by:.*[A-Za-z0-9]\s+<.+@.+>
    error: Signed-off-by not found in latest commit
    suggest: run command `git commit -m "conventional commit message" --signoff`

After (TOML v2.0+):

[commit]
require_signed_off_by = true

Benefits: Simple boolean configuration, built-in DCO validation, clear error messages.

Architecture Improvements

New Validation Engine

  • SOLID Principles: Maintainable, extensible design

  • Specialized Validators: Dedicated classes for each validation type

  • Centralized Rules: Rule catalog with consistent error messages

  • Flexible Configuration: Dynamic rule building from configuration

Module Organization

Module

Purpose

config.py

TOML configuration loading and validation

engine.py

Core validation engine and specialized validators

rule_builder.py

Builds validation rules from configuration

rules_catalog.py

Centralized catalog of validation rules and messages

main.py

CLI interface and orchestration

Getting Started with v2.0

For New Users:

  1. Install commit-check v2.0+:

    pip install commit-check>=2.0.0
    
  2. Start with defaults (no configuration needed):

    commit-check --message --branch
    
  3. Customize as needed with cchk.toml:

    [commit]
    conventional_commits = true
    subject_max_length = 72
    

For Existing Users

  1. Follow the Migration Guide: See Migration Guide

  2. Test thoroughly: Validate your new configuration before deploying

Additional Resources