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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file detect-direct-checkins-0.1.2.tar.gz
.
File metadata
- Download URL: detect-direct-checkins-0.1.2.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13714b148f8d6be958cb99c737ab71efb9652f006178b5314500e53c504c6831 |
|
MD5 | a0e2074b24c0a63b71503e352f251a8c |
|
BLAKE2b-256 | 80e68a8d71b6838060c680ae09aab0126401b2c14478904e38f8b6ae8d146702 |
File details
Details for the file detect_direct_checkins-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: detect_direct_checkins-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10163ae168adcbd8c2b519671c3f87bb03495e75c9f6e2c8e1d280aa1cb0f5a7 |
|
MD5 | f1eb9c25aa5c77d6acdcc2690991d6ee |
|
BLAKE2b-256 | 4e8d332be3275f104274f53a6f1c335f9ae314c0ef2fad96e6165599c5318a12 |