Module Index


Coverage status Latest package version CI status Build status Documentation status

Some useful (more or less) git hooks.

Hooks

check-commit-msg

It provides a simple regex check on commit message.

Supported message header formats:

[type]: [description]
[type]([context]): [description]
[type] #[issue_id]: [description]
[type]([context]) #[issue_id]: [description]

Supported message format (if you need a longer commit message):

[header]

[message]

Here type is a specific commit type tag. Recognized types are:

'fix',                      # bugfix
'feat', 'feature',          # feature
'wip',                      # work-in-progress changes (not ready to use)
'maint', 'maintenance',     # code maintenance (dependences, configs)
'backport',                 # backport to an older branch
'test', 'tests',            # code test related
'doc', 'docs',              # documentation related
'style'                     # code style and minor refactoring

The context keyword is optional. It must be in round brackets if present. You may provide a module name or a service name or any project-specific information to localize the scope of a problem.

The issue_id must be prepended with # if present and it should match an bug report / feature request ID connected to this specific commit.

The description is just a short description of your commit. The maximum length of a description part of a header is 60 symbols.

You also can provide any additional information after the header.

Here are some examples:

fix: fixed possible connection drops in db


feat(cache): added multi-value caching


feature(db) #112: support for sqlalchemy v.2

Added sqlalchemy v.2 support in database services
incl. new table init engine and other bla-bla-bla...
<write text here>

Usage

Add it to your .pre-commit-config.yaml for pre-commit:

- repo: https://github.com/violet-black/hooks-vb
  rev: 0.0.2
  hooks:
    - id: check-commit-msg

Also you can install the package via pip and run the hook from the CLI:

pip install hooks-vb
check-commit-msg my_project_dir

Options

  • –msg-fmt - different regex format

  • –categories - different list of type tags

add-version-tag

It automatically adds a version tag to a commit if the __version__ variable in __init__.py has changed and if there’s no such version tag exists in repo. Version tags are checked against PEP440

Examples:

1.0.0
1.2
1.1rc2

Usage

Add it to your .pre-commit-config.yaml for pre-commit:

- repo: https://github.com/violet-black/hooks-vb
  rev: 0.0.2
  hooks:
    - id: add-version-tag
      args: [ 'my_package' ]

Also you can install the package via pip and run the hook from the CLI:

pip install hooks-vb
add-version-tag my_project_dir

Options

  • –skip-tag - skip tagging and only validate a version against PEP440

  • –version-file - change version file location (__init__.py)

  • –version-var - change version variable name (__version__)

  • –remote - change default git remote name to pre-pull tags from (origin)

  • –branch - change default branch name (master)

publish-package

It will automatically build and publish a package on each version change. You will need a properly configured .pypirc for this. If a package with such version is already present in PyPI then it won’t be built. Version tags are checked against PEP440

Usage

Add it to your .pre-commit-config.yaml for pre-commit:

- repo: https://github.com/violet-black/hooks-vb
  rev: 0.0.2
  hooks:
    - id: publish-package
      args: [ 'my_package' ]

Also you can install the package via pip and run the hook from the CLI:

pip install hooks-vb
publish-package my_project_dir

Options

  • –package-name - alternative package name (package dir name by default)

  • –dist-type - package type (sdist or wheel)

  • –output - package storage dir (./dist)

  • –repository - alternative PyPI repository name (pypi)

  • –version-file - change version file location (__init__.py)

  • –version-var - change version variable name (__version__)

Development

You must setup the package in the dev mode and with dev dependencies. The script will automatically install pre-commit and pre-commit hooks for the repository.

git clone https://github.com/violet-black/hooks-vb.git
pip install -e .[dev]