Skip to main content

A utility which detects direct checkins on specific branches.

Project description

detect-direct-checkins

Overview

The detect-direct-checkins utility can be used to detect non-merge commits on given branches in a Git repository. It can be run as a pre-commit framework hook.

Example Usage

Command line tool

detect-direct-checkins is available on PyPI for Python 3.5+ and can be installed with pip:

python3 -m pip install detect-direct-checkins

If you use Arch Linux or one of its derivatives, you can also install detect-direct-checkins from the AUR:

yay -S python-detect-direct-checkins

You also find self-contained executables for 64-bit Linux distributions and macOS High Sierra and newer on the releases page. They are created with PyInstaller and only require glibc >= 2.17 on Linux (should be fine on any recent Linux system).

After the installation, switch your working directory to a Git repository you would like to check and run

detect-direct-checkins --branch release --allow-root

to check a branch release for non-merge commits (but ignore initial root commits without parents).

Usage as a pre-commit hook

Add

- repo: https://github.com/IngoMeyer441/detect-direct-checkins
  rev: 0.1.2
  hooks:
  - id: detect-direct-checkins
  - args: ['--branch=release', '--allow-root']

to your .pre-commit-config.yaml to detect direct checkins to a branch release. The --allow-root switch ignores root commits (initial commits without parents).

The --branch argument can be given multiple times to check more than one branch.

This check is a post-commit check, so make sure to install the pre-commit framework as a post-commit hook:

pre-commit install --hook-type post-commit

I recommend to set default_stages: ['commit'] in your .pre-commit-config.yaml. Otherwise, most checks will run twice (in the pre-commit and post-commit stage).

Important note: Since this is a post-commit hook, this check will not avoid the creation of disallowed commits. It only tells you that a disallowed commit has been created. However, you can run

pre-commit run --hook-type post-commit

as part of your CI pipeline to enforce this check. Direct-checkins to protected branches will cause this check to fail in a CI job.

Options

These options are supported:

  • --branch: Branch which must only contain merge commits, can be given multiple times.
  • --ignore: Commit hashes which will be ignored, can be given multiple times
  • --allow-root: Allow root commits (commits without parents).

Contributing

Please open an issue on GitHub if you experience bugs or miss features. Please consider to send a pull request if you can spend time on fixing the issue yourself. This project uses pre-commit itself to ensure code quality and a consistent code style. Run

make git-hooks-install

to install all linters as Git hooks in your local clone of detect-direct-checkins.

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

detect-direct-checkins-0.1.2.tar.gz (5.5 kB view hashes)

Uploaded Source

Built Distribution

detect_direct_checkins-0.1.2-py3-none-any.whl (5.6 kB view hashes)

Uploaded Python 3

Supported by

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