This PR pins pre-commit to the latest release 2.9.3.
Changelog
### 2.9.3
```
==================
Fixes
- Fix crash on cygwin mismatch check outside of a git directory
- 1721 PR by asottile.
- 1720 issue by chronoB.
- Fix cleanup code on docker volumes for go
- 1725 PR by fsouza.
- Fix working directory detection on SUBST drives on windows
- 1727 PR by mrogaski.
- 1610 issue by jcameron73.
```
### 2.9.2
```
==================
Fixes
- Fix default value for `types_or` so `symlink` and `directory` can be matched
- 1716 PR by asottile.
- 1718 issue by CodeBleu.
```
### 2.9.1
```
==================
Fixes
- Improve error message for "hook goes missing"
- 1709 PR by paulhfischer.
- 1708 issue by theod07.
- Add warning for `/*` in `files` / `exclude` regexes
- 1707 PR by paulhfischer.
- 1702 issue by asottile.
- Fix `healthy()` check for `language: python` on windows when the base
executable has non-ascii characters.
- 1713 PR by asottile.
- 1711 issue by Najiva.
```
### 2.9.0
```
==================
Features
- Add `types_or` which allows matching multiple disparate `types` in a hook
- 1677 by MarcoGorelli.
- 607 by asottile.
- Add Github Sponsors / Open Collective links
- https://github.com/sponsors/asottile
- https://opencollective.com/pre-commit
Fixes
- Improve cleanup for `language: dotnet`
- 1678 by rkm.
- Fix "xargs" when running windows batch files
- 1686 PR by asottile.
- 1604 issue by apietrzak.
- 1604 issue by ufwtlsb.
- Fix conflict with external `rbenv` and `language_version: default`
- 1700 PR by asottile.
- 1699 issue by abuxton.
- Improve performance of `git status` / `git diff` commands by ignoring
submodules
- 1704 PR by Vynce.
- 1701 issue by Vynce.
```
### 2.8.2
```
==================
Fixes
- Fix installation of ruby hooks with `language_version: default`
- 1671 issue by aerickson.
- 1672 PR by asottile.
```
### 2.8.1
```
==================
Fixes
- Allow default `language_version` of `system` when the homedir is `/`
- 1669 PR by asottile.
```
### 2.8.0
```
==================
Features
- Update `rbenv` / `ruby-build`
- 1612 issue by tdeo.
- 1614 PR by asottile.
- Update `sample-config` versions
- 1611 PR by mcsitter.
- Add new language: `dotnet`
- 1598 by rkm.
- Add `--negate` option to `language: pygrep` hooks
- 1643 PR by MarcoGorelli.
- Add zipapp support
- 1616 PR by asottile.
- Run pre-commit through https://pre-commit.ci
- 1662 PR by asottile.
- Add new language: `coursier` (a jvm-based package manager)
- 1633 PR by JosephMoniz.
- Exit with distinct codes: 1 (user error), 3 (unexpected error), 130 (^C)
- 1601 PR by int3l.
Fixes
- Improve `healthy()` check for `language: node` + `language_version: system`
hooks when the system executable goes missing.
- pre-commit/action45 issue by KOliver94.
- 1589 issue by asottile.
- 1590 PR by asottile.
- Fix excess whitespace in error log traceback
- 1592 PR by asottile.
- Fix posixlike shebang invocations with shim executables of the git hook
script on windows.
- 1593 issue by Celeborn2BeAlive.
- 1595 PR by Celeborn2BeAlive.
- Remove hard-coded `C:\PythonXX\python.exe` path on windows as it caused
confusion (and `virtualenv` can sometimes do better)
- 1599 PR by asottile.
- Fix `language: ruby` hooks when `--format-executable` is present in a gemrc
- issue by `Rainbow Tux` (discord).
- 1603 PR by asottile.
- Move `cygwin` / `win32` mismatch error earlier to catch msys2 mismatches
- 1605 issue by danyeaw.
- 1606 PR by asottile.
- Remove `-p` workaround for old `virtualenv`
- 1617 PR by asottile.
- Fix `language: node` installations to not symlink outside of the environment
- pre-commit-ci/issues2 issue by DanielJSottile.
- 1667 PR by asottile.
- Don't identify shim executables as valid `system` for defaulting
`language_version` for `language: node` / `language: ruby`
- 1658 issue by adithyabsk.
- 1668 PR by asottile.
```
### 2.7.1
```
==================
Fixes
- Improve performance of docker hooks by removing slow `ps` call
- 1572 PR by rkm.
- 1569 issue by asottile.
- Fix un-`healthy()` invalidation followed by install being reported as
un-`healthy()`.
- 1576 PR by asottile.
- 1575 issue by jab.
- Fix rare file race condition on windows with `os.replace()`
- 1577 PR by asottile.
```
### 2.7.0
```
==================
Features
- Produce error message if an environment is immediately unhealthy
- 1535 PR by asottile.
- Add --no-allow-missing-config option to init-templatedir
- 1539 PR by singergr.
- Add warning for old list-style configuration
- 1544 PR by asottile.
- Allow pre-commit to succeed on a readonly store.
- 1570 PR by asottile.
- 1536 issue by asottile.
Fixes
- Fix error messaging when the store directory is readonly
- 1546 PR by asottile.
- 1536 issue by asottile.
- Improve `diff` performance with many hooks
- 1566 PR by jhenkens.
- 1564 issue by jhenkens.
```
### 2.6.0
```
==================
Fixes
- Fix node hooks when `NPM_CONFIG_USERCONFIG` is set
- 1521 PR by asottile.
- 1516 issue by rkm.
Features
- Skip `rbenv` / `ruby-download` if system ruby is available
- 1509 PR by asottile.
- Partial support for ruby on windows (if system ruby is installed)
- 1509 PR by asottile.
- 201 issue by asottile.
```
### 2.5.1
```
==================
Fixes
- Prevent infinite recursion of post-checkout on clone
- 1497 PR by asottile.
- 1496 issue by admorgan.
```
### 2.5.0
```
==================
Features
- Expose a `PRE_COMMIT=1` environment variable when running hooks
- 1467 PR by tech-chad.
- 1426 issue by lorenzwalthert.
Fixes
- Fix `UnicodeDecodeError` on windows when using the `py` launcher to detect
executables with non-ascii characters in the path
- 1474 PR by asottile.
- 1472 issue by DrFobos.
- Fix `DeprecationWarning` on python3.9 for `random.shuffle` method
- 1480 PR by asottile.
- 1479 issue by isidentical.
- Normalize slashes earlier such that global `files` / `exclude` use forward
slashes on windows as well.
- 1494 PR by asottile.
- 1476 issue by harrybiddle.
```
### 2.4.0
```
==================
Features
- Add support for `post-commit` hooks
- 1415 PR by ModischFabrications.
- 1411 issue by ModischFabrications.
- Silence pip version warning in python installation error
- 1412 PR by asottile.
- Improve python `healthy()` when upgrading operating systems.
- 1431 PR by asottile.
- 1427 issue by ahonnecke.
- `language: python_venv` is now an alias to `language: python` (and will be
removed in a future version).
- 1431 PR by asottile.
- Speed up python `healthy()` check.
- 1431 PR by asottile.
- `pre-commit autoupdate` now tries to maintain quoting style of `rev`.
- 1435 PR by marcjay.
- 1434 issue by marcjay.
Fixes
- Fix installation of go modules in `repo: local`.
- 1428 PR by scop.
- Fix committing with unstaged files and a failing `post-checkout` hook.
- 1422 PR by domodwyer.
- 1418 issue by domodwyer.
- Fix installation of node hooks with system node installed on freebsd.
- 1443 PR by asottile.
- 1440 issue by jockej.
- Fix ruby hooks when `GEM_PATH` is set globally.
- 1442 PR by tdeo.
- Improve error message when `pre-commit autoupdate` /
`pre-commit migrate-config` are run but the pre-commit configuration is not
valid yaml.
- 1448 PR by asottile.
- 1447 issue by rpdelaney.
```
### 2.3.0
```
==================
Features
- Calculate character width using `east_asian_width`
- 1378 PR by sophgn.
- Use `language_version: system` by default for `node` hooks if `node` / `npm`
are globally installed.
- 1388 PR by asottile.
Fixes
- No longer use a hard-coded user id for docker hooks on windows
- 1371 PR by killuazhu.
- Fix colors on windows during `git commit`
- 1381 issue by Cielquan.
- 1382 PR by asottile.
- Produce readable error message for incorrect argument count to `hook-impl`
- 1394 issue by pip9ball.
- 1395 PR by asottile.
- Fix installations which involve an upgrade of `pip` on windows
- 1398 issue by xiaohuazi123.
- 1399 PR by asottile.
- Preserve line endings in `pre-commit autoupdate`
- 1402 PR by utek.
```
### 2.2.0
```
==================
Features
- Add support for the `post-checkout` hook
- 1120 issue by domenkozar.
- 1339 PR by andrewhare.
- Add more readable `--from-ref` / `--to-ref` aliases for `--source` /
`--origin`
- 1343 PR by asottile.
Fixes
- Make sure that `--commit-msg-filename` is passed for `commit-msg` /
`prepare-commit-msg`.
- 1336 PR by particledecay.
- 1341 PR by particledecay.
- Fix crash when installation error is un-decodable bytes
- 1358 issue by Guts.
- 1359 PR by asottile.
- Fix python `healthy()` check when `python` executable goes missing.
- 1363 PR by asottile.
- Fix crash when script executables are missing shebangs.
- 1350 issue by chriselion.
- 1364 PR by asottile.
Misc.
- pre-commit now requires python>=3.6.1 (previously 3.6.0)
- 1346 PR by asottile.
```
### 2.1.1
```
==================
Fixes
- Temporarily restore python 3.6.0 support (broken in 2.0.0)
- reported by obestwalter.
- 081f3028 by asottile.
```
### 2.1.0
```
==================
Features
- Replace `aspy.yaml` with `sort_keys=False`.
- 1306 PR by asottile.
- Add support for `perl`.
- 1303 PR by scop.
Fixes
- Improve `.git/hooks/*` shebang creation when pythons are in `/usr/local/bin`.
- 1312 issue by kbsezginel.
- 1319 PR by asottile.
Misc.
- Add repository badge for pre-commit.
- [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
- 1334 PR by ddelange.
```
### 2.0.1
```
==================
Fixes
- Fix `ImportError` in python 3.6.0 / 3.6.1 for `typing.NoReturn`.
- 1302 PR by asottile.
```
### 2.0.0
```
==================
Features
- Expose `PRE_COMMIT_REMOTE_NAME` and `PRE_COMMIT_REMOTE_URL` as environment
variables during `pre-push` hooks.
- 1274 issue by dmbarreiro.
- 1288 PR by dmbarreiro.
Fixes
- Fix `python -m pre_commit --version` to mention `pre-commit` instead of
`__main__.py`.
- 1273 issue by ssbarnea.
- 1276 PR by orcutt989.
- Don't filter `GIT_SSL_NO_VERIFY` from environment when cloning.
- 1293 PR by schiermike.
- Allow `pre-commit init-templatedir` to succeed even if `core.hooksPath` is
set.
- 1298 issue by damienrj.
- 1299 PR by asottile.
Misc
- Fix changelog date for 1.21.0.
- 1275 PR by flaudisio.
Updating
- Removed `pcre` language, use `pygrep` instead.
- 1268 PR by asottile.
- Removed `--tags-only` argument to `pre-commit autoupdate` (it has done
nothing since 0.14.0).
- 1269 by asottile.
- Remove python2 / python3.5 support. Note that pre-commit still supports
running hooks written in python2, but pre-commit itself requires python 3.6+.
- 1260 issue by asottile.
- 1277 PR by asottile.
- 1281 PR by asottile.
- 1282 PR by asottile.
- 1287 PR by asottile.
- 1289 PR by asottile.
- 1292 PR by asottile.
```
### 1.21.0
```
===================
Features
- Add `conda` as a new `language`.
- 1204 issue by xhochy.
- 1232 PR by xhochy.
- Add top-level configuration `files` for file selection.
- 1220 issue by TheButlah.
- 1248 PR by asottile.
- Rework `--verbose` / `verbose` to be more consistent with normal runs.
- 1249 PR by asottile.
- Add support for the `pre-merge-commit` git hook.
- 1210 PR by asottile.
- this requires git 2.24+.
- Add `pre-commit autoupdate --freeze` which produces "frozen" revisions.
- 1068 issue by SkypLabs.
- 1256 PR by asottile.
- Display hook runtime duration when run with `--verbose`.
- 1144 issue by potiuk.
- 1257 PR by asottile.
Fixes
- Produce better error message when erroneously running inside of `.git`.
- 1219 issue by Nusserdt.
- 1224 PR by asottile.
- Note: `git` has since fixed this bug: git/git36fd304d
- Produce better error message when hook installation fails.
- 1250 issue by asottile.
- 1251 PR by asottile.
- Fix cloning when `GIT_SSL_CAINFO` is necessary.
- 1253 issue by igankevich.
- 1254 PR by igankevich.
- Fix `pre-commit try-repo` for bare, on-disk repositories.
- 1258 issue by webknjaz.
- 1259 PR by asottile.
- Add some whitespace to `pre-commit autoupdate` to improve terminal autolink.
- 1261 issue by yhoiseth.
- 1262 PR by yhoiseth.
Misc.
- Minor code documentation updates.
- 1200 PR by ryanrhee.
- 1201 PR by ryanrhee.
```
### 1.20.0
```
===================
Features
- Allow building newer versions of `ruby`.
- 1193 issue by choffee.
- 1195 PR by choffee.
- Bump versions reported in `pre-commit sample-config`.
- 1197 PR by asottile.
Fixes
- Fix rare race condition with multiple concurrent first-time runs.
- 1192 issue by raholler.
- 1196 PR by asottile.
```
### 1.19.0
```
===================
Features
- Allow `--hook-type` to be specified multiple times.
- example: `pre-commit install --hook-type pre-commit --hook-type pre-push`
- 1139 issue by MaxymVlasov.
- 1145 PR by asottile.
- Include more version information in crash logs.
- 1142 by marqueewinq.
- Hook colors are now passed through on platforms which support `pty`.
- 1169 by asottile.
- pre-commit now uses `importlib.metadata` directly when running in python 3.8
- 1176 by asottile.
- Normalize paths to forward slash separators on windows.
- makes it easier to match paths with `files:` regex
- avoids some quoting bugs in shell-based hooks
- 1173 issue by steigenTI.
- 1179 PR by asottile.
Fixes
- Remove some extra newlines from error messages.
- 1148 by asottile.
- When a hook is not executable it now reports `not executable` instead of
`not found`.
- 1159 issue by nixjdm.
- 1161 PR by WillKoehrsen.
- Fix interleaving of stdout / stderr in hooks.
- 1168 by asottile.
- Fix python environment `healthy()` check when current working directory
contains modules which shadow standard library names.
- issue by vwhsu92.
- 1185 PR by asottile.
Updating
- Regexes handling both backslashes and forward slashes for directory
separators now only need to handle forward slashes.
```
### 1.18.3
```
===================
Fixes
- Fix `node_modules` plugin installation on windows
- 1123 issue by henryykt.
- 1122 PR by henryykt.
```
### 1.18.2
```
===================
Fixes
- Make default python lookup more deterministic to avoid redundant installs
- 1117 PR by scop.
```
### 1.18.1
```
===================
Fixes
- Fix installation of `rust` hooks with new `cargo`
- 1112 issue by zimbatm.
- 1113 PR by zimbatm.
```
### 1.18.0
```
===================
Features
- Use the current running executable if it matches the requested
`language_version`
- 1062 PR by asottile.
- Print the stage when a hook is not found
- 1078 issue by madkinsz.
- 1079 PR by madkinsz.
- `pre-commit autoupdate` now supports non-`master` default branches
- 1089 PR by asottile.
- Add `pre-commit init-templatedir` which makes it easier to automatically
enable `pre-commit` in cloned repositories.
- 1084 issue by ssbarnea.
- 1090 PR by asottile.
- 1107 PR by asottile.
- pre-commit's color can be controlled using
`PRE_COMMIT_COLOR={auto,always,never}`
- 1073 issue by saper.
- 1092 PR by geieredgar.
- 1098 PR by geieredgar.
- pre-commit's color can now be disabled using `TERM=dumb`
- 1073 issue by saper.
- 1103 PR by asottile.
- pre-commit now supports `docker` based hooks on windows
- 1072 by cz-fish.
- 1093 PR by geieredgar.
Fixes
- Fix shallow clone
- 1077 PR by asottile.
- Fix autoupdate version flip flop when using shallow cloning
- 1076 issue by mxr.
- 1088 PR by asottile.
- Fix autoupdate when the current revision is invalid
- 1088 PR by asottile.
Misc.
- Replace development instructions with `tox --devenv ...`
- 1032 issue by yoavcaspi.
- 1067 PR by asottile.
```
### 1.17.0
```
===================
Features
- Produce better output on `^C`
- 1030 PR by asottile.
- Warn on unknown keys at the top level and repo level
- 1028 PR by yoavcaspi.
- 1048 PR by asottile.
Fixes
- Fix handling of `^C` in wrapper script in python 3.x
- 1027 PR by asottile.
- Fix `rmtree` for non-writable directories
- 1042 issue by detailyang.
- 1043 PR by asottile.
- Pass `--color` option to `git diff` in `--show-diff-on-failure`
- 1007 issue by chadrik.
- 1051 PR by mandarvaze.
Misc.
- Fix test when `pre-commit` is installed globally
- 1032 issue by yoavcaspi.
- 1045 PR by asottile.
```
### 1.16.1
```
===================
Fixes
- Don't `UnicodeDecodeError` on unexpected non-UTF8 output in python health
check on windows.
- 1021 issue by nicoddemus.
- 1022 PR by asottile.
```
### 1.16.0
```
===================
Features
- Add support for `prepare-commit-msg` hook
- 1004 PR by marcjay.
Fixes
- Fix repeated legacy `pre-commit install` on windows
- 1010 issue by AbhimanyuHK.
- 1011 PR by asottile.
- Whitespace fixup
- 1014 PR by mxr.
- Fix CI check for working pcre support
- 1015 PR by Myrheimb.
Misc.
- Switch CI from travis / appveyor to azure pipelines
- 1012 PR by asottile.
```
### 1.15.2
```
===================
Fixes
- Fix cloning non-branch tag while in the fallback slow-clone strategy.
- 997 issue by jpinner.
- 998 PR by asottile.
```
### 1.15.1
```
===================
Fixes
- Fix command length calculation on posix when `SC_ARG_MAX` is not defined.
- 691 issue by ushuz.
- 987 PR by asottile.
```
### 1.15.0
```
===================
Features
- No longer require being in a `git` repo to run `pre-commit` `clean` / `gc` /
`sample-config`.
- 959 PR by asottile.
- Improve command line length limit detection.
- 691 issue by antonbabenko.
- 966 PR by asottile.
- Use shallow cloning when possible.
- 958 PR by DanielChabrowski.
- Add `minimum_pre_commit_version` top level key to require a new-enough
version of `pre-commit`.
- 977 PR by asottile.
- Add helpful CI-friendly message when running
`pre-commit run --all-files --show-diff-on-failure`.
- 982 PR by bnorquist.
Fixes
- Fix `try-repo` for staged untracked changes.
- 973 PR by DanielChabrowski.
- Fix rpm build by explicitly using `!/usr/bin/env python3` in hook template.
- 985 issue by tim77.
- 986 PR by tim77.
- Guard against infinite recursion when executing legacy hook script.
- 981 PR by tristan0x.
Misc
- Add test for `git.no_git_env()`
- 972 PR by javabrett.
```
### 1.14.4
```
===================
Fixes
- Don't filter `GIT_SSH_COMMAND` env variable from `git` commands
- 947 issue by firba1.
- 948 PR by firba1.
- Install npm packages as if they were installed from `git`
- 943 issue by ssbarnea.
- 949 PR by asottile.
- Don't filter `GIT_EXEC_PREFIX` env variable from `git` commands
- 664 issue by revolter.
- 944 PR by minrk.
```
### 1.14.3
```
===================
Fixes
- Improve performance of filename classification by 45% - 55%.
- 921 PR by asottile.
- Fix installing `go` hooks while `GOBIN` environment variable is set.
- 924 PR by ashanbrown.
- Fix crash while running `pre-commit migrate-config` / `pre-commit autoupdate`
with an empty configuration file.
- 929 issue by ardakuyumcu.
- 933 PR by jessebona.
- Require a newer virtualenv to fix metadata-based setup.cfg installs.
- 936 PR by asottile.
```
### 1.14.2
```
===================
Fixes
- Make the hook shebang detection more timid (1.14.0 regression)
- Homebrew/homebrew-core35825.
- 915 PR by asottile.
```
### 1.14.1
```
===================
Fixes
- Fix python executable lookup on windows when using conda
- 913 issue by dawelter2.
- 914 PR by asottile.
```
### 1.14.0
```
===================
Features
- Add an `alias` configuration value to allow repeated hooks to be
differentiated
- 882 issue by s0undt3ch.
- 886 PR by s0undt3ch.
- Add `identity` meta hook which just prints filenames
- 865 issue by asottile.
- 898 PR by asottile.
- Factor out `cached-property` and improve startup performance by ~10%
- 899 PR by asottile.
- Add a warning on unexpected keys in configuration
- 899 PR by asottile.
- Teach `pre-commit try-repo` to clone uncommitted changes on disk.
- 589 issue by sverhagen.
- 703 issue by asottile.
- 904 PR by asottile.
- Implement `pre-commit gc` which will clean up no-longer-referenced cache
repos.
- 283 issue by jtwang.
- 906 PR by asottile.
- Add top level config `default_language_version` to streamline overriding the
`language_version` configuration in many places
- 647 issue by asottile.
- 908 PR by asottile.
- Add top level config `default_stages` to streamline overriding the `stages`
configuration in many places
- 768 issue by mattlqx.
- 909 PR by asottile.
Fixes
- More intelligently pick hook shebang (`!/usr/bin/env python3`)
- 878 issue by fristedt.
- 893 PR by asottile.
- Several fixes related to `--files` / `--config`:
- `pre-commit run --files x` outside of a git dir no longer stacktraces
- `pre-commit run --config ./relative` while in a sub directory of the git
repo is now able to find the configuration
- `pre-commit run --files ...` no longer runs a subprocess per file
(performance)
- 895 PR by asottile.
- `pre-commit try-repo ./relative` while in a sub directory of the git repo is
now able to clone properly
- 903 PR by asottile.
- Ensure `meta` repos cannot have a language other than `system`
- 905 issue by asottile.
- 907 PR by asottile.
- Fix committing with unstaged files that were `git add --intent-to-add` added
- 881 issue by henniss.
- 912 PR by asottile.
Misc.
- Use `--no-gpg-sign` when running tests
- 894 PR by s0undt3ch.
```
### 1.13.0
```
===================
Features
- Run hooks in parallel
- individual hooks may opt out of parallel execution with `require_serial: true`
- 510 issue by chriskuehl.
- 851 PR by chriskuehl.
Fixes
- Improve platform-specific `xargs` command length detection
- 691 issue by antonbabenko.
- 839 PR by georgeyk.
- Fix `pre-commit autoupdate` when updating to a latest tag missing a
`.pre-commit-hooks.yaml`
- 856 issue by asottile.
- 857 PR by runz0rd.
- Upgrade the `pre-commit-hooks` version in `pre-commit sample-config`
- 870 by asottile.
- Improve balancing of multiprocessing by deterministic shuffling of args
- 861 issue by Dunedan.
- 874 PR by chriskuehl.
- `ruby` hooks work with latest `gem` by removing `--no-ri` / `--no-rdoc` and
instead using `--no-document`.
- 889 PR by asottile.
Misc.
- Use `--no-gpg-sign` when running tests
- 885 PR by s0undt3ch.
Updating
- If a hook requires serial execution, set `require_serial: true` to avoid the new
parallel execution.
- `ruby` hooks now require `gem>=2.0.0`. If your platform doesn't support this
by default, select a newer version using
[`language_version`](https://pre-commit.com/overriding-language-version).
```
### 1.12.0
```
===================
Fixes
- Install multi-hook repositories only once (performance)
- issue by chriskuehl.
- 852 PR by asottile.
- Improve performance by factoring out pkg_resources (performance)
- 840 issue by RonnyPfannschmidt.
- 846 PR by asottile.
```
### 1.11.2
```
===================
Fixes
- `check-useless-exclude` now considers `types`
- 704 issue by asottile.
- 837 PR by georgeyk.
- `pre-push` hook was not identifying all commits on push to new branch
- 843 issue by prem-nuro.
- 844 PR by asottile.
```
### 1.11.1
```
===================
Fixes
- Fix `.git` dir detection in `git<2.5` (regression introduced in
[1.10.5](1105))
- 831 issue by mmacpherson.
- 832 PR by asottile.
```
### 1.11.0
```
===================
Features
- Add new `fail` language which always fails
- light-weight way to forbid files by name.
- 812 821 PRs by asottile.
Fixes
- Fix `ResourceWarning`s for unclosed files
- 811 PR by BoboTiG.
- Don't write ANSI colors on windows when color enabling fails
- 819 PR by jeffreyrack.
```
### 1.10.5
```
===================
Fixes
- Work around `PATH` issue with `brew` `python` on `macos`
- Homebrew/homebrew-core30445 issue by asottile.
- 805 PR by asottile.
- Support `pre-commit install` inside a worktree
- 808 issue by s0undt3ch.
- 809 PR by asottile.
```
### 1.10.4
```
===================
Fixes
- Replace `yaml.load` with safe alternative
- `yaml.load` can lead to arbitrary code execution, though not where it
was used
- issue by tonybaloney.
- 779 PR by asottile.
- Improve not found error with script paths (`./exe`)
- 782 issue by ssbarnea.
- 785 PR by asottile.
- Fix minor buffering issue during `--show-diff-on-failure`
- 796 PR by asottile.
- Default `language_version: python3` for `python_venv` when running in python2
- 794 issue by ssbarnea.
- 797 PR by asottile.
- `pre-commit run X` only run `X` and not hooks with `stages: [...]`
- 772 issue by asottile.
- 803 PR by mblayman.
Misc.
- Improve travis-ci build times by caching rust / swift artifacts
- 781 PR by expobrain.
- Test against python3.7
- 789 PR by expobrain.
```
### 1.10.3
```
===================
Fixes
- Fix `pre-push` during a force push without a fetch
- 777 issue by domenkozar.
- 778 PR by asottile.
```
### 1.10.2
```
===================
Fixes
- pre-commit now invokes hooks with a consistent ordering of filenames
- issue by mxr.
- 767 PR by asottile.
```
### 1.10.1
```
===================
Fixes
- `python_venv` language would leak dependencies when pre-commit was installed
in a `-mvirtualenv` virtualenv
- 755 756 issue and PR by asottile.
```
### 1.10.0
```
===================
Features
- Add support for hooks written in `rust`
- 751 PR by chriskuehl.
```
### 1.9.0
```
==================
Features
- Add new `python_venv` language which uses the `venv` module instead of
`virtualenv`
- 631 issue by dongyuzheng.
- 739 PR by ojii.
- Include `LICENSE` in distribution
- 745 issue by nicoddemus.
- 746 PR by nicoddemus.
Fixes
- Normalize relative paths for `pre-commit try-repo`
- 750 PR by asottile.
```
### 1.8.2
```
==================
Fixes
- Fix cloning relative paths (regression in 1.7.0)
- 728 issue by jdswensen.
- 729 PR by asottile.
```
### 1.8.1
```
==================
Fixes
- Fix integration with go 1.10 and `pkg` directory
- 725 PR by asottile
- Restore support for `git<1.8.5` (inadvertently removed in 1.7.0)
- 723 issue by JohnLyman.
- 724 PR by asottile.
```
### 1.8.0
```
==================
Features
- Add a `manual` stage for cli-only interaction
- 719 issue by hectorv.
- 720 PR by asottile.
- Add a `--multiline` option to `pygrep` hooks
- 716 PR by tdeo.
```
### 1.7.0
```
==================
Features
- pre-commit config validation was split to a separate `cfgv` library
- 700 PR by asottile.
- Allow `--repo` to be specified multiple times to autoupdate
- 658 issue by KevinHock.
- 713 PR by asottile.
- Enable `rev` as a preferred alternative to `sha` in `.pre-commit-config.yaml`
- 106 issue by asottile.
- 715 PR by asottile.
- Use `--clean-src` option when invoking `nodeenv` to save ~70MB per node env
- 717 PR by asottile.
- Refuse to install with `core.hooksPath` set
- pre-commit/pre-commit-hooks250 issue by revolter.
- 663 issue by asottile.
- 718 PR by asottile.
Fixes
- hooks with `additional_dependencies` now get isolated environments
- 590 issue by coldnight.
- 711 PR by asottile.
Misc.
- test against swift 4.x
- 709 by theresama.
Updating
- Run `pre-commit migrate-config` to convert `sha` to `rev` in the
`.pre-commit-config.yaml` file.
```
### 1.6.0
```
==================
Features
- Hooks now may have a `verbose` option to produce output even without failure
- 689 issue by bagerard.
- 695 PR by bagerard.
- Installed hook no longer requires `bash`
- 699 PR by asottile.
Fixes
- legacy pre-push / commit-msg hooks are now invoked as if `git` called them
- 693 issue by samskiter.
- 694 PR by asottile.
- 699 PR by asottile.
```
### 1.5.1
```
==================
Fixes
- proper detection for root commit during pre-push
- 503 PR by philipgian.
- 692 PR by samskiter.
```
### 1.5.0
```
==================
Features
- pre-commit now supports node hooks on windows.
- for now, requires python3 due to https://bugs.python.org/issue32539
- huge thanks to wenzowski for the tip!
- 200 issue by asottile.
- 685 PR by asottile.
Misc.
- internal reorganization of `PrefixedCommandRunner` -> `Prefix`
- 684 PR by asottile.
- https-ify links.
- pre-commit.com is now served over https.
- 688 PR by asottile.
```
### 1.4.5
```
==================
Fixes
- Fix `local` golang repositories with `additional_dependencies`.
- 679 680 issue and PR by asottile.
Misc.
- Replace some string literals with constants
- 678 PR by revolter.
```
### 1.4.4
```
==================
Fixes
- Invoke `git diff` without a pager during `--show-diff-on-failure`.
- 676 PR by asottile.
```
### 1.4.3
```
==================
Fixes
- `pre-commit` on windows can find pythons at non-hardcoded paths.
- 674 PR by asottile.
```
### 1.4.2
```
==================
Fixes
- `pre-commit` no longer clears `GIT_SSH` environment variable when cloning.
- 671 PR by rp-tanium.
```
### 1.4.1
```
==================
Fixes
- `pre-commit autoupdate --repo ...` no longer deletes other repos.
- 660 issue by KevinHock.
- 661 PR by KevinHock.
```
### 1.4.0
```
==================
Features
- Lazily install repositories.
- When running `pre-commit run <hookid>`, pre-commit will only install
the necessary repositories.
- 637 issue by webknjaz.
- 639 PR by asottile.
- Version defaulting now applies to local hooks as well.
- This extends 556 to apply to local hooks.
- 646 PR by asottile.
- Add new `repo: meta` hooks.
- `meta` hooks expose some linters of the pre-commit configuration itself.
- `id: check-useless-excludes`: ensures that `exclude` directives actually
apply to *any* file in the repository.
- `id: check-hooks-apply`: ensures that the configured hooks apply to
at least one file in the repository.
- pre-commit/pre-commit-hooks63 issue by asottile.
- 405 issue by asottile.
- 643 PR by hackedd.
- 653 PR by asottile.
- 654 PR by asottile.
- Allow a specific repository to be autoupdated instead of all repositories.
- `pre-commit autoupdate --repo ...`
- 656 issue by KevinHock.
- 657 PR by KevinHock.
Fixes
- Apply selinux labelling option to docker volumes
- 642 PR by jimmidyson.
```
### 1.3.0
```
==================
Features
- Add `pre-commit try-repo` commands
- The new `try-repo` takes a repo and will run the hooks configured in
that hook repository.
- An example invocation:
`pre-commit try-repo https://github.com/pre-commit/pre-commit-hooks`
- `pre-commit try-repo` can also take all the same arguments as
`pre-commit run`.
- It can be used to try out a repository without needing to configure it.
- It can also be used to test a hook repository while developing it.
- 589 issue by sverhagen.
- 633 PR by asottile.
```
### 1.2.0
```
==================
Features
- Add `pygrep` language
- `pygrep` aims to be a more cross-platform alternative to `pcre` hooks.
- 630 PR by asottile.
Fixes
- Use `pipes.quote` for executable path in hook template
- Fixes bash syntax error when git dir contains spaces
- 626 PR by asottile.
- Clean up hook template
- Simplify code
- Fix `--config` not being respected in some situations
- 627 PR by asottile.
- Use `file://` protocol for cloning under test
- Fix `file://` clone paths being treated as urls for golang
- 629 PR by asottile.
- Add `ctypes` as an import for virtualenv healthchecks
- Fixes python3.6.2 <=> python3.6.3 virtualenv invalidation
- e70825ab by asottile.
```
### 1.1.2
```
==================
Fixes
- pre-commit can successfully install commit-msg hooks
- Due to an oversight, the commit-msg-tmpl was missing from the packaging
- 623 issue by sobolevn.
- 624 PR by asottile.
```
### 1.1.1
```
==================
Features
- pre-commit also checks the `ssl` module for virtualenv health
- Suggestion by merwok.
- 619 PR by asottile.
Fixes
- pre-commit no longer crashes with unstaged files when run for the first time
- 620 621 issue by Lucas-C.
- 622 PR by asottile.
```
### 1.1.0
```
==================
Features
- pre-commit configuration gains a `fail_fast` option.
- You must be using the v2 configuration format introduced in 1.0.0.
- `fail_fast` defaults to `false`.
- 240 issue by Lucas-C.
- 616 PR by asottile.
- pre-commit configuration gains a global `exclude` option.
- This option takes a python regular expression and can be used to exclude
files from _all_ hooks.
- You must be using the v2 configuration format introduced in 1.0.0.
- 281 issue by asieira.
- 617 PR by asottile.
```
### 1.0.1
```
==================
Fixes
- Fix a regression in the return code of `pre-commit autoupdate`
- `pre-commit migrate-config` and `pre-commit autoupdate` return 0 when
successful.
- 614 PR by asottile.
```
### 1.0.0
```
==================
pre-commit will now be following [semver](https://semver.org/). Thanks to all
of the [contributors](https://github.com/pre-commit/pre-commit/graphs/contributors)
that have helped us get this far!
Features
- pre-commit's cache directory has moved from `~/.pre-commit` to
`$XDG_CACHE_HOME/pre-commit` (usually `~/.cache/pre-commit`).
- `pre-commit clean` now cleans up both the old and new directory.
- If you were caching this directory in CI, you'll want to adjust the
location.
- 562 issue by nagromc.
- 602 PR by asottile.
- A new configuration format for `.pre-commit-config.yaml` is introduced which
will enable future development.
- The new format has a top-level map instead of a top-level list. The
new format puts the hook repositories in a `repos` key.
- Old list-based configurations will continue to be supported.
- A command `pre-commit migrate-config` has been introduced to "upgrade"
the configuration format to the new map-based configuration.
- `pre-commit autoupdate` now automatically calls `migrate-config`.
- In a later release, list-based configurations will issue a deprecation
warning.
- An example diff for upgrading a configuration:
diff
+repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
sha: v0.9.2
hooks:
- 414 issue by asottile.
- 610 PR by asottile.
Updating
- Run `pre-commit migrate-config` to convert `.pre-commit-config.yaml` to the
new map format.
- Update any references from `~/.pre-commit` to `~/.cache/pre-commit`.
```
### 0.18.3
```
===================
- Allow --config to affect `pre-commit install`
- Tweak not found error message during `pre-push` / `commit-msg`
- Improve node support when running under cygwin.
```
### 0.18.2
```
===================
- Fix `--all-files`, detection of staged files, detection of manually edited
files during merge conflict, and detection of files to push for non-ascii
filenames.
```
### 0.18.1
```
===================
- Only mention locking when waiting for a lock.
- Fix `IOError` during locking in timeout situation on windows under python 2.
```
### 0.18.0
```
===================
- Add a new `docker_image` language type. `docker_image` is intended to be a
lightweight hook type similar to `system` / `script` which allows one to use
an existing docker image that provides a hook. `docker_image` hooks can
also be used as repository `local` hooks.
```
### 0.17.0
```
===================
- Fix typos in help
- Allow `commit-msg` hook to be uninstalled
- Upgrade the `sample-config`
- Remove undocumented `--no-stash` and `--allow-unstaged-config`
- Remove `validate_config` hook pre-commit hook.
- Fix installation race condition when multiple `pre-commit` processes would
attempt to install the same repository.
```
### 0.16.3
```
===================
- autoupdate attempts to maintain config formatting.
```
### 0.16.2
```
===================
- Initialize submodules in hook repositories.
```
### 0.16.1
```
===================
- Improve node support when running under cygwin.
```
### 0.16.0
```
===================
- Remove backward compatibility with repositories providing metadata via
`hooks.yaml`. New repositories should provide `.pre-commit-hooks.yaml`.
Run `pre-commit autoupdate` to upgrade to the latest repositories.
- Improve golang support when running under cygwin.
- Fix crash with unstaged trailing whitespace additions while git was
configured with `apply.whitespace = error`.
- Fix crash with unstaged end-of-file crlf additions and the file's lines
ended with crlf while git was configured with `core-autocrlf = true`.
```
### 0.15.4
```
===================
- Add support for the `commit-msg` git hook
```
### 0.15.3
```
===================
- Recover from invalid python virtualenvs
```
### 0.15.2
```
===================
- Work around a windows-specific virtualenv bug pypa/virtualenv1062
This failure mode was introduced in 0.15.1
```
### 0.15.1
```
===================
- Use a more intelligent default language version for python
```
### 0.15.0
```
===================
- Add `types` and `exclude_types` for filtering files. These options take
an array of "tags" identified for each file. The tags are sourced from
[identify](https://github.com/chriskuehl/identify). One can list the tags
for a file by running `identify-cli filename`.
- `files` is now optional (defaulting to `''`)
- `always_run` + missing `files` also defaults to `files: ''` (previously it
defaulted to `'^$'` (this reverses e150921c).
```
### 0.14.3
```
===================
- Expose `--origin` and `--source` as `PRE_COMMIT_ORIGIN` and
`PRE_COMMIT_SOURCE` environment variables when running as `pre-push`.
```
### 0.14.2
```
===================
- Use `--no-ext-diff` when running `git diff`
```
### 0.14.1
```
===================
- Don't crash when `always_run` is `True` and `files` is not provided.
- Set `VIRTUALENV_NO_DOWNLOAD` when making python virtualenvs.
```
### 0.14.0
```
===================
- Add a `pre-commit sample-config` command
- Enable ansi color escapes on modern windows
- `autoupdate` now defaults to `--tags-only`, use `--bleeding-edge` for the
old behavior
- Add support for `log_file` in hook configuration to tee hook output to a
file for CI consumption, etc.
- Fix crash with unicode commit messages during merges in python 2.
- Add a `pass_filenames` option to allow disabling automatic filename
positional arguments to hooks.
```
### 0.13.6
```
===================
- Fix regression in 0.13.5: allow `always_run` and `files` together despite
doing nothing.
```
### 0.13.5
```
===================
- 0.13.4 contained incorrect files
```
### 0.13.4
```
===================
- Add `--show-diff-on-failure` option to `pre-commit run`
- Replace `jsonschema` with better error messages
```
### 0.13.3
```
===================
- Add `--allow-missing-config` to install: allows `git commit` without a
configuration.
```
### 0.13.2
```
===================
- Version the local hooks repo
- Allow `minimum_pre_commit_version` for local hooks
```
### 0.13.1
```
===================
- Fix dummy gem for ruby local hooks
```
### 0.13.0
```
===================
- Autoupdate now works even when the current state is broken.
- Improve pre-push fileset on new branches
- Allow "language local" hooks, hooks which install dependencies using
`additional_dependencies` and `language` are now allowed in `repo: local`.
```
### 0.12.2
```
===================
- Fix docker hooks on older (<1.12) docker
```
### 0.12.1
```
===================
- golang hooks now support additional_dependencies
- Added a --tags-only option to pre-commit autoupdate
```
### 0.12.0
```
===================
- The new default file for implementing hooks in remote repositories is now
.pre-commit-hooks.yaml to encourage repositories to add the metadata. As
such, the previous hooks.yaml is now deprecated and generates a warning.
- Fix bug with local configuration interfering with ruby hooks
- Added support for hooks written in golang.
```
### 0.11.0
```
===================
- SwiftPM support.
```
### 0.10.1
```
===================
- shlex entry of docker based hooks.
- Make shlex behaviour of entry more consistent.
```
### 0.10.0
```
===================
- Add an `install-hooks` command similar to `install --install-hooks` but
without the `install` side-effects.
- Adds support for docker based hooks.
```
### 0.9.4
```
==================
- Warn when cygwin / python mismatch
- Add --config for customizing configuration during run
- Update rbenv + plugins to latest versions
- pcre hooks now fail when grep / ggrep are not present
```
### 0.9.3
```
==================
- Fix python hook installation when a strange setup.cfg exists
```
### 0.9.2
```
==================
- Remove some python2.6 compatibility
- UI is no longer sized to terminal width, instead 80 characters or longest
necessary width.
- Fix inability to create python hook environments when using venv / pyvenv on
osx
```
### 0.9.1
```
==================
- Remove some python2.6 compatibility
- Fix staged-files-only with external diff tools
```
### 0.9.0
```
==================
- Only consider forward diff in changed files
- Don't run on staged deleted files that still exist
- Autoupdate to tags when available
- Stop supporting python2.6
- Fix crash with staged files containing unstaged lines which have non-utf8
bytes and trailing whitespace
```
### 0.8.2
```
==================
- Fix a crash introduced in 0.8.0 when an executable was not found
```
### 0.8.1
```
==================
- Fix regression introduced in 0.8.0 when already using rbenv with no
configured ruby hook version
```
### 0.8.0
```
==================
- Fix --files when running in a subdir
- Improve --help a bit
- Switch to pyterminalsize for determining terminal size
```
### 0.7.6
```
==================
- Work under latest virtualenv
- No longer create empty directories on windows with latest virtualenv
```
### 0.7.5
```
==================
- Consider dead symlinks as files when committing
```
### 0.7.4
```
==================
- Produce error message instead of crashing on non-utf8 installation failure
```
### 0.7.3
```
==================
- Fix regression introduced in 0.7.1 breaking `git commit -a`
```
### 0.7.2
```
==================
- Add `always_run` setting for hooks to run even without file changes.
```
### 0.7.1
```
==================
- Support running pre-commit inside submodules
```
### 0.7.0
```
==================
- Store state about additional_dependencies for rollforward/rollback compatibility
```
### 0.6.8
```
==================
- Build as a universal wheel
- Allow '.format('-like strings in arguments
- Add an option to require a minimum pre-commit version
```
### 0.6.7
```
==================
- Print a useful message when a hook id is not present
- Fix printing of non-ascii with unexpected errors
- Print a message when a hook modifies files but produces no output
```
### 0.6.6
```
==================
- Add `additional_dependencies` to hook configuration.
- Fix pre-commit cloning under git 2.6
- Small improvements for windows
```
### 0.6.5
```
==================
- Allow args for pcre hooks
```
### 0.6.4
```
==================
- Fix regression introduced in 0.6.3 regarding hooks which make non-utf8 diffs
```
### 0.6.3
```
==================
- Remove `expected_return_code`
- Fail a hook if it makes modifications to the working directory
```
### 0.6.2
```
==================
- Use --no-ri --no-rdoc instead of --no-document for gem to fix old gem
```
### 0.6.1
```
==================
- Fix pre-push when pushing something that's already up to date
```
### 0.6.0
```
==================
- Filter hooks by stage (commit, push).
```
### 0.5.5
```
==================
- Change permissions a few files
- Rename the validate entrypoints
- Add --version to some entrypoints
- Add --no-document to gem installations
- Use expanduser when finding the python binary
- Suppress complaint about $TERM when no tty is attached
- Support pcre hooks on osx through ggrep
```
### 0.5.4
```
==================
- Allow hooks to produce outputs with arbitrary bytes
- Fix pre-commit install when .git/hooks/pre-commit is a dead symlink
- Allow an unstaged config when using --files or --all-files
```
### 0.5.3
```
==================
- Fix autoupdate with "local" hooks - don't purge local hooks.
```
### 0.5.2
```
==================
- Fix autoupdate with "local" hooks
```
### 0.5.1
```
==================
- Fix bug with unknown non-ascii hook-id
- Avoid crash when .git/hooks is not present in some git clients
```
### 0.5.0
```
==================
- Add a new "local" hook type for running hooks without remote configuration.
- Complain loudly when .pre-commit-config.yaml is unstaged.
- Better support for multiple language versions when running hooks.
- Allow exclude to be defaulted in repository configuration.
```
### 0.4.4
```
==================
- Use sys.executable when executing virtualenv
```
### 0.4.3
```
==================
- Use reset instead of checkout when checkout out hook repo
```
### 0.4.2
```
==================
- Limit length of xargs arguments to workaround windows xargs bug
```
### 0.4.1
```
==================
- Don't rename across devices when creating sqlite database
```
### 0.4.0
```
==================
- Make ^C^C During installation not cause all subsequent runs to fail
- Print while installing (instead of while cloning)
- Use sqlite to manage repositories (instead of symlinks)
- MVP Windows support
```
### 0.3.6
```
==================
- `args` in venv'd languages are now property quoted.
```
### 0.3.5
```
==================
- Support running during `pre-push`. See https://pre-commit.com/advanced 'pre-commit during push'.
```
### 0.3.4
```
==================
- Allow hook providers to default `args` in `hooks.yaml`
```
### 0.3.3
```
==================
- Improve message for `CalledProcessError`
```
### 0.3.2
```
==================
- Fix for `staged_files_only` with color.diff = always 176.
```
### 0.3.1
```
==================
- Fix error clobbering 174.
- Remove dependency on `plumbum`.
- Allow pre-commit to be run from anywhere in a repository 175.
```
### 0.3.0
```
==================
- Add `--files` option to `pre-commit run`
```
### 0.2.11
```
===================
- Fix terminal width detection (broken in 0.2.10)
```
### 0.2.10
```
===================
- Bump version of nodeenv to fix bug with ~/.npmrc
- Choose `python` more intelligently when running.
```
### 0.2.9
```
==================
- Fix bug where sys.stdout.write must take `bytes` in python 2.6
```
### 0.2.8
```
==================
- Allow a client to have duplicates of hooks.
- Use --prebuilt instead of system for node.
- Improve some fatal error messages
```
### 0.2.7
```
==================
- Produce output when running pre-commit install --install-hooks
```
### 0.2.6
```
==================
- Print hookid on failure
- Use sys.executable for running nodeenv
- Allow running as `python -m pre_commit`
```
### 0.2.5
```
==================
- Default columns to 80 (for non-terminal execution).
```
### 0.2.4
```
==================
- Support --install-hooks as an argument to `pre-commit install`
- Install hooks before attempting to run anything
- Use `python -m nodeenv` instead of `nodeenv`
```
### 0.2.3
```
==================
- Freeze ruby building infrastructure
- Fix bug that assumed diffs were utf-8
```
### 0.2.2
```
==================
- Fix filenames with spaces
```
### 0.2.1
```
==================
- Use either `pre-commit` or `python -m pre_commit.main` depending on which is
available
- Don't use readlink -f
```
### 0.2.0
```
==================
- Fix for merge-conflict during cherry-picking.
- Add -V / --version
- Add migration install mode / install -f / --overwrite
- Add `pcre` "language" for perl compatible regexes
- Reorganize packages.
```
### 0.1.1
```
==================
- Fixed bug with autoupdate setting defaults on un-updated repos.
```
### 0.1.0
```
==================
- Initial Release
```
Links
- PyPI: https://pypi.org/project/pre-commit
- Changelog: https://pyup.io/changelogs/pre-commit/
- Repo: https://github.com/pre-commit/pre-commit
This PR pins pre-commit to the latest release 2.9.3.
Changelog
### 2.9.3 ``` ================== Fixes - Fix crash on cygwin mismatch check outside of a git directory - 1721 PR by asottile. - 1720 issue by chronoB. - Fix cleanup code on docker volumes for go - 1725 PR by fsouza. - Fix working directory detection on SUBST drives on windows - 1727 PR by mrogaski. - 1610 issue by jcameron73. ``` ### 2.9.2 ``` ================== Fixes - Fix default value for `types_or` so `symlink` and `directory` can be matched - 1716 PR by asottile. - 1718 issue by CodeBleu. ``` ### 2.9.1 ``` ================== Fixes - Improve error message for "hook goes missing" - 1709 PR by paulhfischer. - 1708 issue by theod07. - Add warning for `/*` in `files` / `exclude` regexes - 1707 PR by paulhfischer. - 1702 issue by asottile. - Fix `healthy()` check for `language: python` on windows when the base executable has non-ascii characters. - 1713 PR by asottile. - 1711 issue by Najiva. ``` ### 2.9.0 ``` ================== Features - Add `types_or` which allows matching multiple disparate `types` in a hook - 1677 by MarcoGorelli. - 607 by asottile. - Add Github Sponsors / Open Collective links - https://github.com/sponsors/asottile - https://opencollective.com/pre-commit Fixes - Improve cleanup for `language: dotnet` - 1678 by rkm. - Fix "xargs" when running windows batch files - 1686 PR by asottile. - 1604 issue by apietrzak. - 1604 issue by ufwtlsb. - Fix conflict with external `rbenv` and `language_version: default` - 1700 PR by asottile. - 1699 issue by abuxton. - Improve performance of `git status` / `git diff` commands by ignoring submodules - 1704 PR by Vynce. - 1701 issue by Vynce. ``` ### 2.8.2 ``` ================== Fixes - Fix installation of ruby hooks with `language_version: default` - 1671 issue by aerickson. - 1672 PR by asottile. ``` ### 2.8.1 ``` ================== Fixes - Allow default `language_version` of `system` when the homedir is `/` - 1669 PR by asottile. ``` ### 2.8.0 ``` ================== Features - Update `rbenv` / `ruby-build` - 1612 issue by tdeo. - 1614 PR by asottile. - Update `sample-config` versions - 1611 PR by mcsitter. - Add new language: `dotnet` - 1598 by rkm. - Add `--negate` option to `language: pygrep` hooks - 1643 PR by MarcoGorelli. - Add zipapp support - 1616 PR by asottile. - Run pre-commit through https://pre-commit.ci - 1662 PR by asottile. - Add new language: `coursier` (a jvm-based package manager) - 1633 PR by JosephMoniz. - Exit with distinct codes: 1 (user error), 3 (unexpected error), 130 (^C) - 1601 PR by int3l. Fixes - Improve `healthy()` check for `language: node` + `language_version: system` hooks when the system executable goes missing. - pre-commit/action45 issue by KOliver94. - 1589 issue by asottile. - 1590 PR by asottile. - Fix excess whitespace in error log traceback - 1592 PR by asottile. - Fix posixlike shebang invocations with shim executables of the git hook script on windows. - 1593 issue by Celeborn2BeAlive. - 1595 PR by Celeborn2BeAlive. - Remove hard-coded `C:\PythonXX\python.exe` path on windows as it caused confusion (and `virtualenv` can sometimes do better) - 1599 PR by asottile. - Fix `language: ruby` hooks when `--format-executable` is present in a gemrc - issue by `Rainbow Tux` (discord). - 1603 PR by asottile. - Move `cygwin` / `win32` mismatch error earlier to catch msys2 mismatches - 1605 issue by danyeaw. - 1606 PR by asottile. - Remove `-p` workaround for old `virtualenv` - 1617 PR by asottile. - Fix `language: node` installations to not symlink outside of the environment - pre-commit-ci/issues2 issue by DanielJSottile. - 1667 PR by asottile. - Don't identify shim executables as valid `system` for defaulting `language_version` for `language: node` / `language: ruby` - 1658 issue by adithyabsk. - 1668 PR by asottile. ``` ### 2.7.1 ``` ================== Fixes - Improve performance of docker hooks by removing slow `ps` call - 1572 PR by rkm. - 1569 issue by asottile. - Fix un-`healthy()` invalidation followed by install being reported as un-`healthy()`. - 1576 PR by asottile. - 1575 issue by jab. - Fix rare file race condition on windows with `os.replace()` - 1577 PR by asottile. ``` ### 2.7.0 ``` ================== Features - Produce error message if an environment is immediately unhealthy - 1535 PR by asottile. - Add --no-allow-missing-config option to init-templatedir - 1539 PR by singergr. - Add warning for old list-style configuration - 1544 PR by asottile. - Allow pre-commit to succeed on a readonly store. - 1570 PR by asottile. - 1536 issue by asottile. Fixes - Fix error messaging when the store directory is readonly - 1546 PR by asottile. - 1536 issue by asottile. - Improve `diff` performance with many hooks - 1566 PR by jhenkens. - 1564 issue by jhenkens. ``` ### 2.6.0 ``` ================== Fixes - Fix node hooks when `NPM_CONFIG_USERCONFIG` is set - 1521 PR by asottile. - 1516 issue by rkm. Features - Skip `rbenv` / `ruby-download` if system ruby is available - 1509 PR by asottile. - Partial support for ruby on windows (if system ruby is installed) - 1509 PR by asottile. - 201 issue by asottile. ``` ### 2.5.1 ``` ================== Fixes - Prevent infinite recursion of post-checkout on clone - 1497 PR by asottile. - 1496 issue by admorgan. ``` ### 2.5.0 ``` ================== Features - Expose a `PRE_COMMIT=1` environment variable when running hooks - 1467 PR by tech-chad. - 1426 issue by lorenzwalthert. Fixes - Fix `UnicodeDecodeError` on windows when using the `py` launcher to detect executables with non-ascii characters in the path - 1474 PR by asottile. - 1472 issue by DrFobos. - Fix `DeprecationWarning` on python3.9 for `random.shuffle` method - 1480 PR by asottile. - 1479 issue by isidentical. - Normalize slashes earlier such that global `files` / `exclude` use forward slashes on windows as well. - 1494 PR by asottile. - 1476 issue by harrybiddle. ``` ### 2.4.0 ``` ================== Features - Add support for `post-commit` hooks - 1415 PR by ModischFabrications. - 1411 issue by ModischFabrications. - Silence pip version warning in python installation error - 1412 PR by asottile. - Improve python `healthy()` when upgrading operating systems. - 1431 PR by asottile. - 1427 issue by ahonnecke. - `language: python_venv` is now an alias to `language: python` (and will be removed in a future version). - 1431 PR by asottile. - Speed up python `healthy()` check. - 1431 PR by asottile. - `pre-commit autoupdate` now tries to maintain quoting style of `rev`. - 1435 PR by marcjay. - 1434 issue by marcjay. Fixes - Fix installation of go modules in `repo: local`. - 1428 PR by scop. - Fix committing with unstaged files and a failing `post-checkout` hook. - 1422 PR by domodwyer. - 1418 issue by domodwyer. - Fix installation of node hooks with system node installed on freebsd. - 1443 PR by asottile. - 1440 issue by jockej. - Fix ruby hooks when `GEM_PATH` is set globally. - 1442 PR by tdeo. - Improve error message when `pre-commit autoupdate` / `pre-commit migrate-config` are run but the pre-commit configuration is not valid yaml. - 1448 PR by asottile. - 1447 issue by rpdelaney. ``` ### 2.3.0 ``` ================== Features - Calculate character width using `east_asian_width` - 1378 PR by sophgn. - Use `language_version: system` by default for `node` hooks if `node` / `npm` are globally installed. - 1388 PR by asottile. Fixes - No longer use a hard-coded user id for docker hooks on windows - 1371 PR by killuazhu. - Fix colors on windows during `git commit` - 1381 issue by Cielquan. - 1382 PR by asottile. - Produce readable error message for incorrect argument count to `hook-impl` - 1394 issue by pip9ball. - 1395 PR by asottile. - Fix installations which involve an upgrade of `pip` on windows - 1398 issue by xiaohuazi123. - 1399 PR by asottile. - Preserve line endings in `pre-commit autoupdate` - 1402 PR by utek. ``` ### 2.2.0 ``` ================== Features - Add support for the `post-checkout` hook - 1120 issue by domenkozar. - 1339 PR by andrewhare. - Add more readable `--from-ref` / `--to-ref` aliases for `--source` / `--origin` - 1343 PR by asottile. Fixes - Make sure that `--commit-msg-filename` is passed for `commit-msg` / `prepare-commit-msg`. - 1336 PR by particledecay. - 1341 PR by particledecay. - Fix crash when installation error is un-decodable bytes - 1358 issue by Guts. - 1359 PR by asottile. - Fix python `healthy()` check when `python` executable goes missing. - 1363 PR by asottile. - Fix crash when script executables are missing shebangs. - 1350 issue by chriselion. - 1364 PR by asottile. Misc. - pre-commit now requires python>=3.6.1 (previously 3.6.0) - 1346 PR by asottile. ``` ### 2.1.1 ``` ================== Fixes - Temporarily restore python 3.6.0 support (broken in 2.0.0) - reported by obestwalter. - 081f3028 by asottile. ``` ### 2.1.0 ``` ================== Features - Replace `aspy.yaml` with `sort_keys=False`. - 1306 PR by asottile. - Add support for `perl`. - 1303 PR by scop. Fixes - Improve `.git/hooks/*` shebang creation when pythons are in `/usr/local/bin`. - 1312 issue by kbsezginel. - 1319 PR by asottile. Misc. - Add repository badge for pre-commit. - [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) - 1334 PR by ddelange. ``` ### 2.0.1 ``` ================== Fixes - Fix `ImportError` in python 3.6.0 / 3.6.1 for `typing.NoReturn`. - 1302 PR by asottile. ``` ### 2.0.0 ``` ================== Features - Expose `PRE_COMMIT_REMOTE_NAME` and `PRE_COMMIT_REMOTE_URL` as environment variables during `pre-push` hooks. - 1274 issue by dmbarreiro. - 1288 PR by dmbarreiro. Fixes - Fix `python -m pre_commit --version` to mention `pre-commit` instead of `__main__.py`. - 1273 issue by ssbarnea. - 1276 PR by orcutt989. - Don't filter `GIT_SSL_NO_VERIFY` from environment when cloning. - 1293 PR by schiermike. - Allow `pre-commit init-templatedir` to succeed even if `core.hooksPath` is set. - 1298 issue by damienrj. - 1299 PR by asottile. Misc - Fix changelog date for 1.21.0. - 1275 PR by flaudisio. Updating - Removed `pcre` language, use `pygrep` instead. - 1268 PR by asottile. - Removed `--tags-only` argument to `pre-commit autoupdate` (it has done nothing since 0.14.0). - 1269 by asottile. - Remove python2 / python3.5 support. Note that pre-commit still supports running hooks written in python2, but pre-commit itself requires python 3.6+. - 1260 issue by asottile. - 1277 PR by asottile. - 1281 PR by asottile. - 1282 PR by asottile. - 1287 PR by asottile. - 1289 PR by asottile. - 1292 PR by asottile. ``` ### 1.21.0 ``` =================== Features - Add `conda` as a new `language`. - 1204 issue by xhochy. - 1232 PR by xhochy. - Add top-level configuration `files` for file selection. - 1220 issue by TheButlah. - 1248 PR by asottile. - Rework `--verbose` / `verbose` to be more consistent with normal runs. - 1249 PR by asottile. - Add support for the `pre-merge-commit` git hook. - 1210 PR by asottile. - this requires git 2.24+. - Add `pre-commit autoupdate --freeze` which produces "frozen" revisions. - 1068 issue by SkypLabs. - 1256 PR by asottile. - Display hook runtime duration when run with `--verbose`. - 1144 issue by potiuk. - 1257 PR by asottile. Fixes - Produce better error message when erroneously running inside of `.git`. - 1219 issue by Nusserdt. - 1224 PR by asottile. - Note: `git` has since fixed this bug: git/git36fd304d - Produce better error message when hook installation fails. - 1250 issue by asottile. - 1251 PR by asottile. - Fix cloning when `GIT_SSL_CAINFO` is necessary. - 1253 issue by igankevich. - 1254 PR by igankevich. - Fix `pre-commit try-repo` for bare, on-disk repositories. - 1258 issue by webknjaz. - 1259 PR by asottile. - Add some whitespace to `pre-commit autoupdate` to improve terminal autolink. - 1261 issue by yhoiseth. - 1262 PR by yhoiseth. Misc. - Minor code documentation updates. - 1200 PR by ryanrhee. - 1201 PR by ryanrhee. ``` ### 1.20.0 ``` =================== Features - Allow building newer versions of `ruby`. - 1193 issue by choffee. - 1195 PR by choffee. - Bump versions reported in `pre-commit sample-config`. - 1197 PR by asottile. Fixes - Fix rare race condition with multiple concurrent first-time runs. - 1192 issue by raholler. - 1196 PR by asottile. ``` ### 1.19.0 ``` =================== Features - Allow `--hook-type` to be specified multiple times. - example: `pre-commit install --hook-type pre-commit --hook-type pre-push` - 1139 issue by MaxymVlasov. - 1145 PR by asottile. - Include more version information in crash logs. - 1142 by marqueewinq. - Hook colors are now passed through on platforms which support `pty`. - 1169 by asottile. - pre-commit now uses `importlib.metadata` directly when running in python 3.8 - 1176 by asottile. - Normalize paths to forward slash separators on windows. - makes it easier to match paths with `files:` regex - avoids some quoting bugs in shell-based hooks - 1173 issue by steigenTI. - 1179 PR by asottile. Fixes - Remove some extra newlines from error messages. - 1148 by asottile. - When a hook is not executable it now reports `not executable` instead of `not found`. - 1159 issue by nixjdm. - 1161 PR by WillKoehrsen. - Fix interleaving of stdout / stderr in hooks. - 1168 by asottile. - Fix python environment `healthy()` check when current working directory contains modules which shadow standard library names. - issue by vwhsu92. - 1185 PR by asottile. Updating - Regexes handling both backslashes and forward slashes for directory separators now only need to handle forward slashes. ``` ### 1.18.3 ``` =================== Fixes - Fix `node_modules` plugin installation on windows - 1123 issue by henryykt. - 1122 PR by henryykt. ``` ### 1.18.2 ``` =================== Fixes - Make default python lookup more deterministic to avoid redundant installs - 1117 PR by scop. ``` ### 1.18.1 ``` =================== Fixes - Fix installation of `rust` hooks with new `cargo` - 1112 issue by zimbatm. - 1113 PR by zimbatm. ``` ### 1.18.0 ``` =================== Features - Use the current running executable if it matches the requested `language_version` - 1062 PR by asottile. - Print the stage when a hook is not found - 1078 issue by madkinsz. - 1079 PR by madkinsz. - `pre-commit autoupdate` now supports non-`master` default branches - 1089 PR by asottile. - Add `pre-commit init-templatedir` which makes it easier to automatically enable `pre-commit` in cloned repositories. - 1084 issue by ssbarnea. - 1090 PR by asottile. - 1107 PR by asottile. - pre-commit's color can be controlled using `PRE_COMMIT_COLOR={auto,always,never}` - 1073 issue by saper. - 1092 PR by geieredgar. - 1098 PR by geieredgar. - pre-commit's color can now be disabled using `TERM=dumb` - 1073 issue by saper. - 1103 PR by asottile. - pre-commit now supports `docker` based hooks on windows - 1072 by cz-fish. - 1093 PR by geieredgar. Fixes - Fix shallow clone - 1077 PR by asottile. - Fix autoupdate version flip flop when using shallow cloning - 1076 issue by mxr. - 1088 PR by asottile. - Fix autoupdate when the current revision is invalid - 1088 PR by asottile. Misc. - Replace development instructions with `tox --devenv ...` - 1032 issue by yoavcaspi. - 1067 PR by asottile. ``` ### 1.17.0 ``` =================== Features - Produce better output on `^C` - 1030 PR by asottile. - Warn on unknown keys at the top level and repo level - 1028 PR by yoavcaspi. - 1048 PR by asottile. Fixes - Fix handling of `^C` in wrapper script in python 3.x - 1027 PR by asottile. - Fix `rmtree` for non-writable directories - 1042 issue by detailyang. - 1043 PR by asottile. - Pass `--color` option to `git diff` in `--show-diff-on-failure` - 1007 issue by chadrik. - 1051 PR by mandarvaze. Misc. - Fix test when `pre-commit` is installed globally - 1032 issue by yoavcaspi. - 1045 PR by asottile. ``` ### 1.16.1 ``` =================== Fixes - Don't `UnicodeDecodeError` on unexpected non-UTF8 output in python health check on windows. - 1021 issue by nicoddemus. - 1022 PR by asottile. ``` ### 1.16.0 ``` =================== Features - Add support for `prepare-commit-msg` hook - 1004 PR by marcjay. Fixes - Fix repeated legacy `pre-commit install` on windows - 1010 issue by AbhimanyuHK. - 1011 PR by asottile. - Whitespace fixup - 1014 PR by mxr. - Fix CI check for working pcre support - 1015 PR by Myrheimb. Misc. - Switch CI from travis / appveyor to azure pipelines - 1012 PR by asottile. ``` ### 1.15.2 ``` =================== Fixes - Fix cloning non-branch tag while in the fallback slow-clone strategy. - 997 issue by jpinner. - 998 PR by asottile. ``` ### 1.15.1 ``` =================== Fixes - Fix command length calculation on posix when `SC_ARG_MAX` is not defined. - 691 issue by ushuz. - 987 PR by asottile. ``` ### 1.15.0 ``` =================== Features - No longer require being in a `git` repo to run `pre-commit` `clean` / `gc` / `sample-config`. - 959 PR by asottile. - Improve command line length limit detection. - 691 issue by antonbabenko. - 966 PR by asottile. - Use shallow cloning when possible. - 958 PR by DanielChabrowski. - Add `minimum_pre_commit_version` top level key to require a new-enough version of `pre-commit`. - 977 PR by asottile. - Add helpful CI-friendly message when running `pre-commit run --all-files --show-diff-on-failure`. - 982 PR by bnorquist. Fixes - Fix `try-repo` for staged untracked changes. - 973 PR by DanielChabrowski. - Fix rpm build by explicitly using `!/usr/bin/env python3` in hook template. - 985 issue by tim77. - 986 PR by tim77. - Guard against infinite recursion when executing legacy hook script. - 981 PR by tristan0x. Misc - Add test for `git.no_git_env()` - 972 PR by javabrett. ``` ### 1.14.4 ``` =================== Fixes - Don't filter `GIT_SSH_COMMAND` env variable from `git` commands - 947 issue by firba1. - 948 PR by firba1. - Install npm packages as if they were installed from `git` - 943 issue by ssbarnea. - 949 PR by asottile. - Don't filter `GIT_EXEC_PREFIX` env variable from `git` commands - 664 issue by revolter. - 944 PR by minrk. ``` ### 1.14.3 ``` =================== Fixes - Improve performance of filename classification by 45% - 55%. - 921 PR by asottile. - Fix installing `go` hooks while `GOBIN` environment variable is set. - 924 PR by ashanbrown. - Fix crash while running `pre-commit migrate-config` / `pre-commit autoupdate` with an empty configuration file. - 929 issue by ardakuyumcu. - 933 PR by jessebona. - Require a newer virtualenv to fix metadata-based setup.cfg installs. - 936 PR by asottile. ``` ### 1.14.2 ``` =================== Fixes - Make the hook shebang detection more timid (1.14.0 regression) - Homebrew/homebrew-core35825. - 915 PR by asottile. ``` ### 1.14.1 ``` =================== Fixes - Fix python executable lookup on windows when using conda - 913 issue by dawelter2. - 914 PR by asottile. ``` ### 1.14.0 ``` =================== Features - Add an `alias` configuration value to allow repeated hooks to be differentiated - 882 issue by s0undt3ch. - 886 PR by s0undt3ch. - Add `identity` meta hook which just prints filenames - 865 issue by asottile. - 898 PR by asottile. - Factor out `cached-property` and improve startup performance by ~10% - 899 PR by asottile. - Add a warning on unexpected keys in configuration - 899 PR by asottile. - Teach `pre-commit try-repo` to clone uncommitted changes on disk. - 589 issue by sverhagen. - 703 issue by asottile. - 904 PR by asottile. - Implement `pre-commit gc` which will clean up no-longer-referenced cache repos. - 283 issue by jtwang. - 906 PR by asottile. - Add top level config `default_language_version` to streamline overriding the `language_version` configuration in many places - 647 issue by asottile. - 908 PR by asottile. - Add top level config `default_stages` to streamline overriding the `stages` configuration in many places - 768 issue by mattlqx. - 909 PR by asottile. Fixes - More intelligently pick hook shebang (`!/usr/bin/env python3`) - 878 issue by fristedt. - 893 PR by asottile. - Several fixes related to `--files` / `--config`: - `pre-commit run --files x` outside of a git dir no longer stacktraces - `pre-commit run --config ./relative` while in a sub directory of the git repo is now able to find the configuration - `pre-commit run --files ...` no longer runs a subprocess per file (performance) - 895 PR by asottile. - `pre-commit try-repo ./relative` while in a sub directory of the git repo is now able to clone properly - 903 PR by asottile. - Ensure `meta` repos cannot have a language other than `system` - 905 issue by asottile. - 907 PR by asottile. - Fix committing with unstaged files that were `git add --intent-to-add` added - 881 issue by henniss. - 912 PR by asottile. Misc. - Use `--no-gpg-sign` when running tests - 894 PR by s0undt3ch. ``` ### 1.13.0 ``` =================== Features - Run hooks in parallel - individual hooks may opt out of parallel execution with `require_serial: true` - 510 issue by chriskuehl. - 851 PR by chriskuehl. Fixes - Improve platform-specific `xargs` command length detection - 691 issue by antonbabenko. - 839 PR by georgeyk. - Fix `pre-commit autoupdate` when updating to a latest tag missing a `.pre-commit-hooks.yaml` - 856 issue by asottile. - 857 PR by runz0rd. - Upgrade the `pre-commit-hooks` version in `pre-commit sample-config` - 870 by asottile. - Improve balancing of multiprocessing by deterministic shuffling of args - 861 issue by Dunedan. - 874 PR by chriskuehl. - `ruby` hooks work with latest `gem` by removing `--no-ri` / `--no-rdoc` and instead using `--no-document`. - 889 PR by asottile. Misc. - Use `--no-gpg-sign` when running tests - 885 PR by s0undt3ch. Updating - If a hook requires serial execution, set `require_serial: true` to avoid the new parallel execution. - `ruby` hooks now require `gem>=2.0.0`. If your platform doesn't support this by default, select a newer version using [`language_version`](https://pre-commit.com/overriding-language-version). ``` ### 1.12.0 ``` =================== Fixes - Install multi-hook repositories only once (performance) - issue by chriskuehl. - 852 PR by asottile. - Improve performance by factoring out pkg_resources (performance) - 840 issue by RonnyPfannschmidt. - 846 PR by asottile. ``` ### 1.11.2 ``` =================== Fixes - `check-useless-exclude` now considers `types` - 704 issue by asottile. - 837 PR by georgeyk. - `pre-push` hook was not identifying all commits on push to new branch - 843 issue by prem-nuro. - 844 PR by asottile. ``` ### 1.11.1 ``` =================== Fixes - Fix `.git` dir detection in `git<2.5` (regression introduced in [1.10.5](1105)) - 831 issue by mmacpherson. - 832 PR by asottile. ``` ### 1.11.0 ``` =================== Features - Add new `fail` language which always fails - light-weight way to forbid files by name. - 812 821 PRs by asottile. Fixes - Fix `ResourceWarning`s for unclosed files - 811 PR by BoboTiG. - Don't write ANSI colors on windows when color enabling fails - 819 PR by jeffreyrack. ``` ### 1.10.5 ``` =================== Fixes - Work around `PATH` issue with `brew` `python` on `macos` - Homebrew/homebrew-core30445 issue by asottile. - 805 PR by asottile. - Support `pre-commit install` inside a worktree - 808 issue by s0undt3ch. - 809 PR by asottile. ``` ### 1.10.4 ``` =================== Fixes - Replace `yaml.load` with safe alternative - `yaml.load` can lead to arbitrary code execution, though not where it was used - issue by tonybaloney. - 779 PR by asottile. - Improve not found error with script paths (`./exe`) - 782 issue by ssbarnea. - 785 PR by asottile. - Fix minor buffering issue during `--show-diff-on-failure` - 796 PR by asottile. - Default `language_version: python3` for `python_venv` when running in python2 - 794 issue by ssbarnea. - 797 PR by asottile. - `pre-commit run X` only run `X` and not hooks with `stages: [...]` - 772 issue by asottile. - 803 PR by mblayman. Misc. - Improve travis-ci build times by caching rust / swift artifacts - 781 PR by expobrain. - Test against python3.7 - 789 PR by expobrain. ``` ### 1.10.3 ``` =================== Fixes - Fix `pre-push` during a force push without a fetch - 777 issue by domenkozar. - 778 PR by asottile. ``` ### 1.10.2 ``` =================== Fixes - pre-commit now invokes hooks with a consistent ordering of filenames - issue by mxr. - 767 PR by asottile. ``` ### 1.10.1 ``` =================== Fixes - `python_venv` language would leak dependencies when pre-commit was installed in a `-mvirtualenv` virtualenv - 755 756 issue and PR by asottile. ``` ### 1.10.0 ``` =================== Features - Add support for hooks written in `rust` - 751 PR by chriskuehl. ``` ### 1.9.0 ``` ================== Features - Add new `python_venv` language which uses the `venv` module instead of `virtualenv` - 631 issue by dongyuzheng. - 739 PR by ojii. - Include `LICENSE` in distribution - 745 issue by nicoddemus. - 746 PR by nicoddemus. Fixes - Normalize relative paths for `pre-commit try-repo` - 750 PR by asottile. ``` ### 1.8.2 ``` ================== Fixes - Fix cloning relative paths (regression in 1.7.0) - 728 issue by jdswensen. - 729 PR by asottile. ``` ### 1.8.1 ``` ================== Fixes - Fix integration with go 1.10 and `pkg` directory - 725 PR by asottile - Restore support for `git<1.8.5` (inadvertently removed in 1.7.0) - 723 issue by JohnLyman. - 724 PR by asottile. ``` ### 1.8.0 ``` ================== Features - Add a `manual` stage for cli-only interaction - 719 issue by hectorv. - 720 PR by asottile. - Add a `--multiline` option to `pygrep` hooks - 716 PR by tdeo. ``` ### 1.7.0 ``` ================== Features - pre-commit config validation was split to a separate `cfgv` library - 700 PR by asottile. - Allow `--repo` to be specified multiple times to autoupdate - 658 issue by KevinHock. - 713 PR by asottile. - Enable `rev` as a preferred alternative to `sha` in `.pre-commit-config.yaml` - 106 issue by asottile. - 715 PR by asottile. - Use `--clean-src` option when invoking `nodeenv` to save ~70MB per node env - 717 PR by asottile. - Refuse to install with `core.hooksPath` set - pre-commit/pre-commit-hooks250 issue by revolter. - 663 issue by asottile. - 718 PR by asottile. Fixes - hooks with `additional_dependencies` now get isolated environments - 590 issue by coldnight. - 711 PR by asottile. Misc. - test against swift 4.x - 709 by theresama. Updating - Run `pre-commit migrate-config` to convert `sha` to `rev` in the `.pre-commit-config.yaml` file. ``` ### 1.6.0 ``` ================== Features - Hooks now may have a `verbose` option to produce output even without failure - 689 issue by bagerard. - 695 PR by bagerard. - Installed hook no longer requires `bash` - 699 PR by asottile. Fixes - legacy pre-push / commit-msg hooks are now invoked as if `git` called them - 693 issue by samskiter. - 694 PR by asottile. - 699 PR by asottile. ``` ### 1.5.1 ``` ================== Fixes - proper detection for root commit during pre-push - 503 PR by philipgian. - 692 PR by samskiter. ``` ### 1.5.0 ``` ================== Features - pre-commit now supports node hooks on windows. - for now, requires python3 due to https://bugs.python.org/issue32539 - huge thanks to wenzowski for the tip! - 200 issue by asottile. - 685 PR by asottile. Misc. - internal reorganization of `PrefixedCommandRunner` -> `Prefix` - 684 PR by asottile. - https-ify links. - pre-commit.com is now served over https. - 688 PR by asottile. ``` ### 1.4.5 ``` ================== Fixes - Fix `local` golang repositories with `additional_dependencies`. - 679 680 issue and PR by asottile. Misc. - Replace some string literals with constants - 678 PR by revolter. ``` ### 1.4.4 ``` ================== Fixes - Invoke `git diff` without a pager during `--show-diff-on-failure`. - 676 PR by asottile. ``` ### 1.4.3 ``` ================== Fixes - `pre-commit` on windows can find pythons at non-hardcoded paths. - 674 PR by asottile. ``` ### 1.4.2 ``` ================== Fixes - `pre-commit` no longer clears `GIT_SSH` environment variable when cloning. - 671 PR by rp-tanium. ``` ### 1.4.1 ``` ================== Fixes - `pre-commit autoupdate --repo ...` no longer deletes other repos. - 660 issue by KevinHock. - 661 PR by KevinHock. ``` ### 1.4.0 ``` ================== Features - Lazily install repositories. - When running `pre-commit run <hookid>`, pre-commit will only install the necessary repositories. - 637 issue by webknjaz. - 639 PR by asottile. - Version defaulting now applies to local hooks as well. - This extends 556 to apply to local hooks. - 646 PR by asottile. - Add new `repo: meta` hooks. - `meta` hooks expose some linters of the pre-commit configuration itself. - `id: check-useless-excludes`: ensures that `exclude` directives actually apply to *any* file in the repository. - `id: check-hooks-apply`: ensures that the configured hooks apply to at least one file in the repository. - pre-commit/pre-commit-hooks63 issue by asottile. - 405 issue by asottile. - 643 PR by hackedd. - 653 PR by asottile. - 654 PR by asottile. - Allow a specific repository to be autoupdated instead of all repositories. - `pre-commit autoupdate --repo ...` - 656 issue by KevinHock. - 657 PR by KevinHock. Fixes - Apply selinux labelling option to docker volumes - 642 PR by jimmidyson. ``` ### 1.3.0 ``` ================== Features - Add `pre-commit try-repo` commands - The new `try-repo` takes a repo and will run the hooks configured in that hook repository. - An example invocation: `pre-commit try-repo https://github.com/pre-commit/pre-commit-hooks` - `pre-commit try-repo` can also take all the same arguments as `pre-commit run`. - It can be used to try out a repository without needing to configure it. - It can also be used to test a hook repository while developing it. - 589 issue by sverhagen. - 633 PR by asottile. ``` ### 1.2.0 ``` ================== Features - Add `pygrep` language - `pygrep` aims to be a more cross-platform alternative to `pcre` hooks. - 630 PR by asottile. Fixes - Use `pipes.quote` for executable path in hook template - Fixes bash syntax error when git dir contains spaces - 626 PR by asottile. - Clean up hook template - Simplify code - Fix `--config` not being respected in some situations - 627 PR by asottile. - Use `file://` protocol for cloning under test - Fix `file://` clone paths being treated as urls for golang - 629 PR by asottile. - Add `ctypes` as an import for virtualenv healthchecks - Fixes python3.6.2 <=> python3.6.3 virtualenv invalidation - e70825ab by asottile. ``` ### 1.1.2 ``` ================== Fixes - pre-commit can successfully install commit-msg hooks - Due to an oversight, the commit-msg-tmpl was missing from the packaging - 623 issue by sobolevn. - 624 PR by asottile. ``` ### 1.1.1 ``` ================== Features - pre-commit also checks the `ssl` module for virtualenv health - Suggestion by merwok. - 619 PR by asottile. Fixes - pre-commit no longer crashes with unstaged files when run for the first time - 620 621 issue by Lucas-C. - 622 PR by asottile. ``` ### 1.1.0 ``` ================== Features - pre-commit configuration gains a `fail_fast` option. - You must be using the v2 configuration format introduced in 1.0.0. - `fail_fast` defaults to `false`. - 240 issue by Lucas-C. - 616 PR by asottile. - pre-commit configuration gains a global `exclude` option. - This option takes a python regular expression and can be used to exclude files from _all_ hooks. - You must be using the v2 configuration format introduced in 1.0.0. - 281 issue by asieira. - 617 PR by asottile. ``` ### 1.0.1 ``` ================== Fixes - Fix a regression in the return code of `pre-commit autoupdate` - `pre-commit migrate-config` and `pre-commit autoupdate` return 0 when successful. - 614 PR by asottile. ``` ### 1.0.0 ``` ================== pre-commit will now be following [semver](https://semver.org/). Thanks to all of the [contributors](https://github.com/pre-commit/pre-commit/graphs/contributors) that have helped us get this far! Features - pre-commit's cache directory has moved from `~/.pre-commit` to `$XDG_CACHE_HOME/pre-commit` (usually `~/.cache/pre-commit`). - `pre-commit clean` now cleans up both the old and new directory. - If you were caching this directory in CI, you'll want to adjust the location. - 562 issue by nagromc. - 602 PR by asottile. - A new configuration format for `.pre-commit-config.yaml` is introduced which will enable future development. - The new format has a top-level map instead of a top-level list. The new format puts the hook repositories in a `repos` key. - Old list-based configurations will continue to be supported. - A command `pre-commit migrate-config` has been introduced to "upgrade" the configuration format to the new map-based configuration. - `pre-commit autoupdate` now automatically calls `migrate-config`. - In a later release, list-based configurations will issue a deprecation warning. - An example diff for upgrading a configuration: diff +repos: - repo: https://github.com/pre-commit/pre-commit-hooks sha: v0.9.2 hooks: - 414 issue by asottile. - 610 PR by asottile. Updating - Run `pre-commit migrate-config` to convert `.pre-commit-config.yaml` to the new map format. - Update any references from `~/.pre-commit` to `~/.cache/pre-commit`. ``` ### 0.18.3 ``` =================== - Allow --config to affect `pre-commit install` - Tweak not found error message during `pre-push` / `commit-msg` - Improve node support when running under cygwin. ``` ### 0.18.2 ``` =================== - Fix `--all-files`, detection of staged files, detection of manually edited files during merge conflict, and detection of files to push for non-ascii filenames. ``` ### 0.18.1 ``` =================== - Only mention locking when waiting for a lock. - Fix `IOError` during locking in timeout situation on windows under python 2. ``` ### 0.18.0 ``` =================== - Add a new `docker_image` language type. `docker_image` is intended to be a lightweight hook type similar to `system` / `script` which allows one to use an existing docker image that provides a hook. `docker_image` hooks can also be used as repository `local` hooks. ``` ### 0.17.0 ``` =================== - Fix typos in help - Allow `commit-msg` hook to be uninstalled - Upgrade the `sample-config` - Remove undocumented `--no-stash` and `--allow-unstaged-config` - Remove `validate_config` hook pre-commit hook. - Fix installation race condition when multiple `pre-commit` processes would attempt to install the same repository. ``` ### 0.16.3 ``` =================== - autoupdate attempts to maintain config formatting. ``` ### 0.16.2 ``` =================== - Initialize submodules in hook repositories. ``` ### 0.16.1 ``` =================== - Improve node support when running under cygwin. ``` ### 0.16.0 ``` =================== - Remove backward compatibility with repositories providing metadata via `hooks.yaml`. New repositories should provide `.pre-commit-hooks.yaml`. Run `pre-commit autoupdate` to upgrade to the latest repositories. - Improve golang support when running under cygwin. - Fix crash with unstaged trailing whitespace additions while git was configured with `apply.whitespace = error`. - Fix crash with unstaged end-of-file crlf additions and the file's lines ended with crlf while git was configured with `core-autocrlf = true`. ``` ### 0.15.4 ``` =================== - Add support for the `commit-msg` git hook ``` ### 0.15.3 ``` =================== - Recover from invalid python virtualenvs ``` ### 0.15.2 ``` =================== - Work around a windows-specific virtualenv bug pypa/virtualenv1062 This failure mode was introduced in 0.15.1 ``` ### 0.15.1 ``` =================== - Use a more intelligent default language version for python ``` ### 0.15.0 ``` =================== - Add `types` and `exclude_types` for filtering files. These options take an array of "tags" identified for each file. The tags are sourced from [identify](https://github.com/chriskuehl/identify). One can list the tags for a file by running `identify-cli filename`. - `files` is now optional (defaulting to `''`) - `always_run` + missing `files` also defaults to `files: ''` (previously it defaulted to `'^$'` (this reverses e150921c). ``` ### 0.14.3 ``` =================== - Expose `--origin` and `--source` as `PRE_COMMIT_ORIGIN` and `PRE_COMMIT_SOURCE` environment variables when running as `pre-push`. ``` ### 0.14.2 ``` =================== - Use `--no-ext-diff` when running `git diff` ``` ### 0.14.1 ``` =================== - Don't crash when `always_run` is `True` and `files` is not provided. - Set `VIRTUALENV_NO_DOWNLOAD` when making python virtualenvs. ``` ### 0.14.0 ``` =================== - Add a `pre-commit sample-config` command - Enable ansi color escapes on modern windows - `autoupdate` now defaults to `--tags-only`, use `--bleeding-edge` for the old behavior - Add support for `log_file` in hook configuration to tee hook output to a file for CI consumption, etc. - Fix crash with unicode commit messages during merges in python 2. - Add a `pass_filenames` option to allow disabling automatic filename positional arguments to hooks. ``` ### 0.13.6 ``` =================== - Fix regression in 0.13.5: allow `always_run` and `files` together despite doing nothing. ``` ### 0.13.5 ``` =================== - 0.13.4 contained incorrect files ``` ### 0.13.4 ``` =================== - Add `--show-diff-on-failure` option to `pre-commit run` - Replace `jsonschema` with better error messages ``` ### 0.13.3 ``` =================== - Add `--allow-missing-config` to install: allows `git commit` without a configuration. ``` ### 0.13.2 ``` =================== - Version the local hooks repo - Allow `minimum_pre_commit_version` for local hooks ``` ### 0.13.1 ``` =================== - Fix dummy gem for ruby local hooks ``` ### 0.13.0 ``` =================== - Autoupdate now works even when the current state is broken. - Improve pre-push fileset on new branches - Allow "language local" hooks, hooks which install dependencies using `additional_dependencies` and `language` are now allowed in `repo: local`. ``` ### 0.12.2 ``` =================== - Fix docker hooks on older (<1.12) docker ``` ### 0.12.1 ``` =================== - golang hooks now support additional_dependencies - Added a --tags-only option to pre-commit autoupdate ``` ### 0.12.0 ``` =================== - The new default file for implementing hooks in remote repositories is now .pre-commit-hooks.yaml to encourage repositories to add the metadata. As such, the previous hooks.yaml is now deprecated and generates a warning. - Fix bug with local configuration interfering with ruby hooks - Added support for hooks written in golang. ``` ### 0.11.0 ``` =================== - SwiftPM support. ``` ### 0.10.1 ``` =================== - shlex entry of docker based hooks. - Make shlex behaviour of entry more consistent. ``` ### 0.10.0 ``` =================== - Add an `install-hooks` command similar to `install --install-hooks` but without the `install` side-effects. - Adds support for docker based hooks. ``` ### 0.9.4 ``` ================== - Warn when cygwin / python mismatch - Add --config for customizing configuration during run - Update rbenv + plugins to latest versions - pcre hooks now fail when grep / ggrep are not present ``` ### 0.9.3 ``` ================== - Fix python hook installation when a strange setup.cfg exists ``` ### 0.9.2 ``` ================== - Remove some python2.6 compatibility - UI is no longer sized to terminal width, instead 80 characters or longest necessary width. - Fix inability to create python hook environments when using venv / pyvenv on osx ``` ### 0.9.1 ``` ================== - Remove some python2.6 compatibility - Fix staged-files-only with external diff tools ``` ### 0.9.0 ``` ================== - Only consider forward diff in changed files - Don't run on staged deleted files that still exist - Autoupdate to tags when available - Stop supporting python2.6 - Fix crash with staged files containing unstaged lines which have non-utf8 bytes and trailing whitespace ``` ### 0.8.2 ``` ================== - Fix a crash introduced in 0.8.0 when an executable was not found ``` ### 0.8.1 ``` ================== - Fix regression introduced in 0.8.0 when already using rbenv with no configured ruby hook version ``` ### 0.8.0 ``` ================== - Fix --files when running in a subdir - Improve --help a bit - Switch to pyterminalsize for determining terminal size ``` ### 0.7.6 ``` ================== - Work under latest virtualenv - No longer create empty directories on windows with latest virtualenv ``` ### 0.7.5 ``` ================== - Consider dead symlinks as files when committing ``` ### 0.7.4 ``` ================== - Produce error message instead of crashing on non-utf8 installation failure ``` ### 0.7.3 ``` ================== - Fix regression introduced in 0.7.1 breaking `git commit -a` ``` ### 0.7.2 ``` ================== - Add `always_run` setting for hooks to run even without file changes. ``` ### 0.7.1 ``` ================== - Support running pre-commit inside submodules ``` ### 0.7.0 ``` ================== - Store state about additional_dependencies for rollforward/rollback compatibility ``` ### 0.6.8 ``` ================== - Build as a universal wheel - Allow '.format('-like strings in arguments - Add an option to require a minimum pre-commit version ``` ### 0.6.7 ``` ================== - Print a useful message when a hook id is not present - Fix printing of non-ascii with unexpected errors - Print a message when a hook modifies files but produces no output ``` ### 0.6.6 ``` ================== - Add `additional_dependencies` to hook configuration. - Fix pre-commit cloning under git 2.6 - Small improvements for windows ``` ### 0.6.5 ``` ================== - Allow args for pcre hooks ``` ### 0.6.4 ``` ================== - Fix regression introduced in 0.6.3 regarding hooks which make non-utf8 diffs ``` ### 0.6.3 ``` ================== - Remove `expected_return_code` - Fail a hook if it makes modifications to the working directory ``` ### 0.6.2 ``` ================== - Use --no-ri --no-rdoc instead of --no-document for gem to fix old gem ``` ### 0.6.1 ``` ================== - Fix pre-push when pushing something that's already up to date ``` ### 0.6.0 ``` ================== - Filter hooks by stage (commit, push). ``` ### 0.5.5 ``` ================== - Change permissions a few files - Rename the validate entrypoints - Add --version to some entrypoints - Add --no-document to gem installations - Use expanduser when finding the python binary - Suppress complaint about $TERM when no tty is attached - Support pcre hooks on osx through ggrep ``` ### 0.5.4 ``` ================== - Allow hooks to produce outputs with arbitrary bytes - Fix pre-commit install when .git/hooks/pre-commit is a dead symlink - Allow an unstaged config when using --files or --all-files ``` ### 0.5.3 ``` ================== - Fix autoupdate with "local" hooks - don't purge local hooks. ``` ### 0.5.2 ``` ================== - Fix autoupdate with "local" hooks ``` ### 0.5.1 ``` ================== - Fix bug with unknown non-ascii hook-id - Avoid crash when .git/hooks is not present in some git clients ``` ### 0.5.0 ``` ================== - Add a new "local" hook type for running hooks without remote configuration. - Complain loudly when .pre-commit-config.yaml is unstaged. - Better support for multiple language versions when running hooks. - Allow exclude to be defaulted in repository configuration. ``` ### 0.4.4 ``` ================== - Use sys.executable when executing virtualenv ``` ### 0.4.3 ``` ================== - Use reset instead of checkout when checkout out hook repo ``` ### 0.4.2 ``` ================== - Limit length of xargs arguments to workaround windows xargs bug ``` ### 0.4.1 ``` ================== - Don't rename across devices when creating sqlite database ``` ### 0.4.0 ``` ================== - Make ^C^C During installation not cause all subsequent runs to fail - Print while installing (instead of while cloning) - Use sqlite to manage repositories (instead of symlinks) - MVP Windows support ``` ### 0.3.6 ``` ================== - `args` in venv'd languages are now property quoted. ``` ### 0.3.5 ``` ================== - Support running during `pre-push`. See https://pre-commit.com/advanced 'pre-commit during push'. ``` ### 0.3.4 ``` ================== - Allow hook providers to default `args` in `hooks.yaml` ``` ### 0.3.3 ``` ================== - Improve message for `CalledProcessError` ``` ### 0.3.2 ``` ================== - Fix for `staged_files_only` with color.diff = always 176. ``` ### 0.3.1 ``` ================== - Fix error clobbering 174. - Remove dependency on `plumbum`. - Allow pre-commit to be run from anywhere in a repository 175. ``` ### 0.3.0 ``` ================== - Add `--files` option to `pre-commit run` ``` ### 0.2.11 ``` =================== - Fix terminal width detection (broken in 0.2.10) ``` ### 0.2.10 ``` =================== - Bump version of nodeenv to fix bug with ~/.npmrc - Choose `python` more intelligently when running. ``` ### 0.2.9 ``` ================== - Fix bug where sys.stdout.write must take `bytes` in python 2.6 ``` ### 0.2.8 ``` ================== - Allow a client to have duplicates of hooks. - Use --prebuilt instead of system for node. - Improve some fatal error messages ``` ### 0.2.7 ``` ================== - Produce output when running pre-commit install --install-hooks ``` ### 0.2.6 ``` ================== - Print hookid on failure - Use sys.executable for running nodeenv - Allow running as `python -m pre_commit` ``` ### 0.2.5 ``` ================== - Default columns to 80 (for non-terminal execution). ``` ### 0.2.4 ``` ================== - Support --install-hooks as an argument to `pre-commit install` - Install hooks before attempting to run anything - Use `python -m nodeenv` instead of `nodeenv` ``` ### 0.2.3 ``` ================== - Freeze ruby building infrastructure - Fix bug that assumed diffs were utf-8 ``` ### 0.2.2 ``` ================== - Fix filenames with spaces ``` ### 0.2.1 ``` ================== - Use either `pre-commit` or `python -m pre_commit.main` depending on which is available - Don't use readlink -f ``` ### 0.2.0 ``` ================== - Fix for merge-conflict during cherry-picking. - Add -V / --version - Add migration install mode / install -f / --overwrite - Add `pcre` "language" for perl compatible regexes - Reorganize packages. ``` ### 0.1.1 ``` ================== - Fixed bug with autoupdate setting defaults on un-updated repos. ``` ### 0.1.0 ``` ================== - Initial Release ```Links
- PyPI: https://pypi.org/project/pre-commit - Changelog: https://pyup.io/changelogs/pre-commit/ - Repo: https://github.com/pre-commit/pre-commit