改善
Kaizen  Today I Learned by Ville Säävuori

Using pre-commit to keep uv.lock in sync

I often forget to uv sync after things like tweaking the version number in pyproject.toml. Then in CI the pipeline eventually fails as somewhere in setup there’s bound to be uv sync --locked which then fails as the lock is not in sync.

Luckily using pre-commit is very easy to completely get around this by making it automatically run uv sync before push.

First, uv add --dev pre-commit

Then,

.pre-commit-config.yaml
default_stages: [pre-commit]
repos:
- repo: local
hooks:
- id: uv-sync
name: UV Sync Dependencies
entry: uv sync --dev --locked
language: system
pass_filenames: false
stages: [pre-push]

Finally, pre-commit install --hook-type pre-push