Skip to main content

Update-Pre-Commit

OpenSSF Best Practices CI marketplace coverage

😎 Why you need update-pre-commit?

If you are already using pre-commit or you are planning to use pre-commit to enforce coding standard and detect issues before code check-in, update-pre-commit keeps revs in .pre-commit-config.yaml up to date and facilitate your change management operations to optionally create pull request.


⭐ Why switch to update-pre-commit?

  • we outperform others in update speed by more than 70%.
  • we protect you against unreliable revs with tag such as alpha, beta, prerelease, and rc.
  • we reduce your supply chain risks with openssf best practices in our development and operations.

Use Case 1️⃣ - running on GitHub action

Please visit our GitHub action (update-pre-commit-action) on the GitHub Marketplace.


Use Case 2️⃣ - running locally on your computer

Prerequisites

* Python (3.12+)
  □ install pre-commit.

* GitHub
  □ create a fine-grained token with repository permissions (see below).

GitHub Token Permission


🔆 Install update-pre-commit

In the command-line examples below, we use a GitHub project named hello-world. This project has pre-commit installed and a valid .pre-commit-config.yaml.

We will first install update-pre-commit in a virtual environment named after the project. Next, we will run update-pre-commit with different options and show the results.

~/work/hello-world $ workon hello-world
(hello-world) ~/work/hello-world $ export GH_TOKEN=github_pat_xxxxxxxxxxxxx
(hello-world) ~/work/hello-world $ pip install -U update-pre-commit

🔍 Using update-pre-commit

🏃 Run to show command line usage and options: --help

(hello-world) ~/work/hello-world $ update-pre-commit --help

Usage: update-pre-commit [OPTIONS]

Options:
  --file TEXT        default: .pre-commit-config.yaml
  --dry-run BOOLEAN  default: true
  --open-pr BOOLEAN  default: false
  --version          Show the version and exit.
  --help             Show this message and exit.



🏃 Run to show version: --version

(hello-world) ~/work/hello-world $ update-pre-commit --version
update-pre-commit, version 1.2.3



🏃 Run default (without any options)

By default, update-pre-commit implicitly runs --dry-run true --open-pr false.

update-pre-commit:

  1. reads .pre-commit-config.yaml.
  2. produces a list of out-of-date pre-commit hooks on screen.
    (NO changes will be made to .pre-commit-config.yaml)
(hello-world) ~/work/hello-world $ update-pre-commit

Starting update-pre-commit (file: .pre-commit-config.yaml, dry-run True open-pr False)...

hadolint/hadolint (v2.11.0) is not using the latest release rev (v2.12.0)
pycqa/flake8 (7.1.2) is not using the latest release tag (7.2.0)
antonbabenko/pre-commit-terraform (v1.98.0) is not using the latest release rev (v1.98.1)

Update revs in .pre-commit-config.yaml: None



🏃 Run to update out-of-date hooks: --dry-run false

update-pre-commit:

  1. reads .pre-commit-config.yaml.
  2. produce a list of out-of-date pre-commit hooks.
  3. update .pre-commit-config.yaml.
(hello-world) ~/work/hello-world $ update-pre-commit --dry-run false

Starting update-pre-commit (file: .pre-commit-config.yaml, dry-run False open-pr False)...

hadolint/hadolint (v2.11.0) is not using the latest release rev (v2.12.0)
pycqa/flake8 (7.1.2) is not using the latest release tag (7.2.0)
antonbabenko/pre-commit-terraform (v1.98.0) is not using the latest release rev (v1.98.1)

Update revs in .pre-commit-config.yaml: Success



🏃 Run to update out-of-date hooks and open a pull request: --dry-run false --open-pr true

update-pre-commit:

  1. reads .pre-commit-config.yaml.
  2. produces a list of out-of-date pre-commit hooks on screen.
  3. updates .pre-commit-config.yaml.
  4. checkout a new git branch update_pre_commit_XXXXXXXXXXXXXXXXXXXXX.
  5. opens a pull request against repository default branch.
(hello-world) ~/work/hello-world $ update-pre-commit --dry-run false --open-pr true

Starting update-pre-commit (file: .pre-commit-config.yaml, dry-run False open-pr True)...

hadolint/hadolint (v2.11.0) is not using the latest release rev (v2.12.0)
pycqa/flake8 (7.1.2) is not using the latest release tag (7.2.0)
antonbabenko/pre-commit-terraform (v1.98.0) is not using the latest release rev (v1.99.0)

Update revs in .pre-commit-config.yaml: Success

Checkout new branch successfully....

Push commits successfully:
from local branch: update_pre_commit_01JV8P09N4G5K9Q4DDD533ARBH
with commit hash : 7b293faf5e14f6950bf28b510eb8d8c8beff26fe

Creating a Pull Request as follows:
Owner/Repo.  : tagdots/hello-world
Title        : update pre-commit-config
Source Branch: tagdots:update_pre_commit_01JV8P09N4G5K9Q4DDD533ARBH
PR for Branch: main
Rev Variances: [{"owner_repo": "antonbabenko/pre-commit-terraform", "current_rev": "v1.98.1", "new_rev": "v1.99.0"}, {"owner_repo": "adrienverge/yamllint", "current_rev": "v1.37.0", "new_rev": "v1.37.1"}]

Created pull request #101 successfully: https://github.com/tagdots/hello-world/pull/101

😕 Troubleshooting

Step 1 - Ensure the following

* your project's .pre-commit-config.yaml file is valid.
* your GitHub fine-grained token has the write permissions to contents and pull requests.
* update-pre-commit can find the .pre-commit-config.yaml file at the root of YOUR project.

Step 2 - Open an issue


🙏 Contributing

Pull requests and stars are always welcome. For pull requests to be accepted on this project, you should follow PEP8 when creating/updating Python codes.

See Contributing


📚 References

Pre-Commit on Github

How to fork a repo

Manage Github Token


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

update_pre_commit-1.2.11.tar.gz (129.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

update_pre_commit-1.2.11-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file update_pre_commit-1.2.11.tar.gz.

File metadata

  • Download URL: update_pre_commit-1.2.11.tar.gz
  • Upload date:
  • Size: 129.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for update_pre_commit-1.2.11.tar.gz
Algorithm Hash digest
SHA256 56debe7d8f1b3840715a2d373a9b57cc0463bbf82d9f94af6d4f0efef0213001
MD5 f028b361c1a9153d61fc1bed89c38d1d
BLAKE2b-256 da6c18e052d2dfdf6809f7193d7db8077079322ad91c23e966fcd36a447c7979

See more details on using hashes here.

File details

Details for the file update_pre_commit-1.2.11-py3-none-any.whl.

File metadata

File hashes

Hashes for update_pre_commit-1.2.11-py3-none-any.whl
Algorithm Hash digest
SHA256 1ef8864596684abe33f3e375c68401c0d9d92f709365b85c00194455610e5b54
MD5 58c835a37b0b1ab1b01ae6e0e3c51a83
BLAKE2b-256 1018ca37f0736340eee749da19e99a8b442e6b0588cf823c7f1570e3e8d0e8a3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.2.11 This release

2 files

1.2.5

2 files

1.2.3

2 files

1.1.31

2 files

1.1.23

2 files

1.1.20

2 files

1.1.9

2 files

1.1.0

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page