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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|