Skip to content

Latest commit

 

History

History
1734 lines (1440 loc) · 50.9 KB

CHANGELOG.md

File metadata and controls

1734 lines (1440 loc) · 50.9 KB

2.11.0 - 2021-03-07

Features

  • Improve warning for mutable ref.
    • #1809 PR by @JamMarHer.
  • Add support for post-merge hook.
    • #1800 PR by @psacawa.
    • #1762 issue by @psacawa.
  • Add r as a supported hook language.
    • #1799 PR by @lorenzwalthert.

Fixes

  • Fix pre-commit install on subst / network drives on windows.
    • #1814 PR by @asottile.
    • #1802 issue by @goroderickgo.
  • Fix installation of local golang repositories for go 1.16.
    • #1818 PR by @rafikdraoui.
    • #1815 issue by @rafikdraoui.

2.10.1 - 2021-02-06

Fixes

  • Fix language: golang repositories containing recursive submodules
    • #1788 issue by @gaurav517.
    • #1789 PR by @paulhfischer.

2.10.0 - 2021-01-27

Features

  • Allow ci as a top-level map for configuration for https://pre-commit.ci
    • #1735 PR by @asottile.
  • Add warning for mutable rev in configuration
    • #1715 PR by @paulhfischer.
    • #974 issue by @asottile.
  • Add warning for /* in top-level files / exclude regexes
    • #1750 PR by @paulhfischer.
    • #1702 issue by @asottile.
  • Expose PRE_COMMIT_REMOTE_BRANCH environment variable during pre-push hooks
    • #1770 PR by @surafelabebe.
  • Produce error message for language / language_version for non-installable languages
    • #1771 PR by @asottile.

Fixes

  • Fix execution in worktrees in subdirectories of bare repositories
    • #1778 PR by @asottile.
    • #1777 issue by @s0undt3ch.

2.9.3 - 2020-12-07

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 - 2020-11-25

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 - 2020-11-25

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 - 2020-11-21

Features

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 - 2020-10-30

Fixes

  • Fix installation of ruby hooks with language_version: default
    • #1671 issue by @aerickson.
    • #1672 PR by @asottile.

2.8.1 - 2020-10-28

Fixes

  • Allow default language_version of system when the homedir is /
    • #1669 PR by @asottile.

2.8.0 - 2020-10-28

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.
  • 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
  • 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 - 2020-08-23

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 - 2020-08-22

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 - 2020-07-01

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 - 2020-06-09

Fixes

  • Prevent infinite recursion of post-checkout on clone
    • #1497 PR by @asottile.
    • #1496 issue by @admorgan.

2.5.0 - 2020-06-08

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 - 2020-05-11

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 - 2020-04-22

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 - 2020-03-12

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 - 2020-02-24

Fixes

  • Temporarily restore python 3.6.0 support (broken in 2.0.0)
    • reported by @obestwalter.
    • 081f3028 by @asottile.

2.1.0 - 2020-02-18

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
    • #1334 PR by @ddelange.

2.0.1 - 2020-01-29

Fixes

  • Fix ImportError in python 3.6.0 / 3.6.1 for typing.NoReturn.
    • #1302 PR by @asottile.

2.0.0 - 2020-01-28

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 - 2020-01-02

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/git@36fd304d
  • 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 - 2019-10-28

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 - 2019-10-26

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 - 2019-08-27

Fixes

  • Fix node_modules plugin installation on windows
    • #1123 issue by @henryykt.
    • #1122 PR by @henryykt.

1.18.2 - 2019-08-15

Fixes

  • Make default python lookup more deterministic to avoid redundant installs
    • #1117 PR by @scop.

1.18.1 - 2019-08-11

Fixes

  • Fix installation of rust hooks with new cargo
    • #1112 issue by @zimbatm.
    • #1113 PR by @zimbatm.

1.18.0 - 2019-08-03

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 - 2019-06-06

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 - 2019-05-08

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 - 2019-05-04

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 - 2019-04-16

Fixes

  • Fix cloning non-branch tag while in the fallback slow-clone strategy.
    • #997 issue by @jpinner.
    • #998 PR by @asottile.

1.15.1 - 2019-04-01

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 - 2019-03-30

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 - 2019-02-18

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 - 2019-02-04

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 - 2019-01-10

Fixes

1.14.1 - 2019-01-10

Fixes

  • Fix python executable lookup on windows when using conda
    • #913 issue by @dawelter2.
    • #914 PR by @asottile.

1.14.0 - 2019-01-08

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 - 2018-12-20

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.

1.12.0 - 2018-10-23

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 - 2018-10-10

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 - 2018-09-22

Fixes

  • Fix .git dir detection in git<2.5 (regression introduced in 1.10.5)
    • #831 issue by @mmacpherson.
    • #832 PR by @asottile.

1.11.0 - 2018-09-02

Features

  • Add new fail language which always fails
    • light-weight way to forbid files by name.
    • #812 #821 PRs by @asottile.

Fixes

  • Fix ResourceWarnings 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 - 2018-08-06

Fixes

  • Work around PATH issue with brew python on macos
  • Support pre-commit install inside a worktree
    • #808 issue by @s0undt3ch.
    • #809 PR by @asottile.

1.10.4 - 2018-07-22

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 - 2018-07-02

Fixes

  • Fix pre-push during a force push without a fetch
    • #777 issue by @domenkozar.
    • #778 PR by @asottile.

1.10.2 - 2018-06-11

Fixes

  • pre-commit now invokes hooks with a consistent ordering of filenames
    • issue by @mxr.
    • #767 PR by @asottile.

1.10.1 - 2018-05-28

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 - 2018-05-26

Features

  • Add support for hooks written in rust
    • #751 PR by @chriskuehl.

1.9.0 - 2018-05-21

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 - 2018-03-17

Fixes

  • Fix cloning relative paths (regression in 1.7.0)
    • #728 issue by @jdswensen.
    • #729 PR by @asottile.

1.8.1 - 2018-03-12

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 - 2018-03-11

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 - 2018-03-03

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

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 - 2018-02-04

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 - 2018-01-24

Fixes

  • proper detection for root commit during pre-push
    • #503 PR by @philipgian.
    • #692 PR by @samskiter.

1.5.0 - 2018-01-13

Features

  • pre-commit now supports node hooks on windows.

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 - 2018-01-09

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 - 2018-01-07

Fixes

  • Invoke git diff without a pager during --show-diff-on-failure.
    • #676 PR by @asottile.

1.4.3 - 2018-01-02

Fixes

  • pre-commit on windows can find pythons at non-hardcoded paths.
    • #674 PR by @asottile.

1.4.2 - 2018-01-02

Fixes

  • pre-commit no longer clears GIT_SSH environment variable when cloning.
    • #671 PR by @rp-tanium.

1.4.1 - 2017-11-09

Fixes

  • pre-commit autoupdate --repo ... no longer deletes other repos.
    • #660 issue by @KevinHock.
    • #661 PR by @KevinHock.

1.4.0 - 2017-11-08

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-hooks#63 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 - 2017-10-08

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 - 2017-10-03

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 - 2017-09-20

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 - 2017-09-17

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 - 2017-09-11

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 - 2017-09-07

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 - 2017-09-07

pre-commit will now be following semver. Thanks to all of the 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:
    +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 - 2017-09-06

  • 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 - 2017-09-05

  • 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 - 2017-09-04

  • Only mention locking when waiting for a lock.
  • Fix IOError during locking in timeout situation on windows under python 2.

0.18.0 - 2017-09-02

  • 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 - 2017-08-24

  • 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 - 2017-08-10

  • autoupdate attempts to maintain config formatting.

0.16.2 - 2017-08-06

  • Initialize submodules in hook repositories.

0.16.1 - 2017-08-04

  • Improve node support when running under cygwin.

0.16.0 - 2017-08-01

  • 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 - 2017-07-23

  • Add support for the commit-msg git hook

0.15.3 - 2017-07-20

  • Recover from invalid python virtualenvs

0.15.2 - 2017-07-09

  • Work around a windows-specific virtualenv bug pypa/virtualenv#1062 This failure mode was introduced in 0.15.1

0.15.1 - 2017-07-09

  • Use a more intelligent default language version for python

0.15.0 - 2017-07-02

  • 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. 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 - 2017-06-28

  • Expose --origin and --source as PRE_COMMIT_ORIGIN and PRE_COMMIT_SOURCE environment variables when running as pre-push.

0.14.2 - 2017-06-09

  • Use --no-ext-diff when running git diff

0.14.1 - 2017-06-02

  • Don't crash when always_run is True and files is not provided.
  • Set VIRTUALENV_NO_DOWNLOAD when making python virtualenvs.

0.14.0 - 2017-05-16

  • 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 - 2017-03-27

  • Fix regression in 0.13.5: allow always_run and files together despite doing nothing.

0.13.5 - 2017-03-26

  • 0.13.4 contained incorrect files

0.13.4 - 2017-03-26

  • Add --show-diff-on-failure option to pre-commit run
  • Replace jsonschema with better error messages

0.13.3 - 2017-02-23

  • Add --allow-missing-config to install: allows git commit without a configuration.

0.13.2 - 2017-02-17

  • Version the local hooks repo
  • Allow minimum_pre_commit_version for local hooks

0.13.1 - 2017-02-16

  • Fix dummy gem for ruby local hooks

0.13.0 - 2017-02-16

  • 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 - 2017-01-27

  • Fix docker hooks on older (<1.12) docker

0.12.1 - 2017-01-25

  • golang hooks now support additional_dependencies
  • Added a --tags-only option to pre-commit autoupdate

0.12.0 - 2017-01-24

  • 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 - 2017-01-20

  • SwiftPM support.

0.10.1 - 2017-01-05

  • shlex entry of docker based hooks.
  • Make shlex behaviour of entry more consistent.

0.10.0 - 2017-01-04

  • 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 - 2016-12-05

  • 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 - 2016-11-07

  • Fix python hook installation when a strange setup.cfg exists

0.9.2 - 2016-10-25

  • 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 - 2016-09-10

  • Remove some python2.6 compatibility
  • Fix staged-files-only with external diff tools

0.9.0 - 2016-08-31

  • 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 - 2016-05-20

  • Fix a crash introduced in 0.8.0 when an executable was not found

0.8.1 - 2016-05-17

  • Fix regression introduced in 0.8.0 when already using rbenv with no configured ruby hook version

0.8.0 - 2016-04-11

  • Fix --files when running in a subdir
  • Improve --help a bit
  • Switch to pyterminalsize for determining terminal size

0.7.6 - 2016-01-19

  • Work under latest virtualenv
  • No longer create empty directories on windows with latest virtualenv

0.7.5 - 2016-01-15

  • Consider dead symlinks as files when committing

0.7.4 - 2016-01-12

  • Produce error message instead of crashing on non-utf8 installation failure

0.7.3 - 2015-12-22

  • Fix regression introduced in 0.7.1 breaking git commit -a

0.7.2 - 2015-12-22

  • Add always_run setting for hooks to run even without file changes.

0.7.1 - 2015-12-19

  • Support running pre-commit inside submodules

0.7.0 - 2015-12-13

  • Store state about additional_dependencies for rollforward/rollback compatibility

0.6.8 - 2015-12-07

  • Build as a universal wheel
  • Allow '.format('-like strings in arguments
  • Add an option to require a minimum pre-commit version

0.6.7 - 2015-12-02

  • 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 - 2015-11-25

  • Add additional_dependencies to hook configuration.
  • Fix pre-commit cloning under git 2.6
  • Small improvements for windows

0.6.5 - 2015-11-19

  • Allow args for pcre hooks

0.6.4 - 2015-11-13

  • Fix regression introduced in 0.6.3 regarding hooks which make non-utf8 diffs

0.6.3 - 2015-11-12

  • Remove expected_return_code
  • Fail a hook if it makes modifications to the working directory

0.6.2 - 2015-10-14

  • Use --no-ri --no-rdoc instead of --no-document for gem to fix old gem

0.6.1 - 2015-10-08

  • Fix pre-push when pushing something that's already up to date

0.6.0 - 2015-10-05

  • Filter hooks by stage (commit, push).

0.5.5 - 2015-09-04

  • 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 - 2015-07-24

  • 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 - 2015-06-15

  • Fix autoupdate with "local" hooks - don't purge local hooks.

0.5.2 - 2015-06-02

  • Fix autoupdate with "local" hooks

0.5.1 - 2015-05-23

  • Fix bug with unknown non-ascii hook-id
  • Avoid crash when .git/hooks is not present in some git clients

0.5.0 - 2015-05-19

  • 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 - 2015-03-29

  • Use sys.executable when executing virtualenv

0.4.3 - 2015-03-25

  • Use reset instead of checkout when checkout out hook repo

0.4.2 - 2015-02-27

  • Limit length of xargs arguments to workaround windows xargs bug

0.4.1 - 2015-02-27

  • Don't rename across devices when creating sqlite database

0.4.0 - 2015-02-27

  • 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 - 2015-02-05

  • args in venv'd languages are now property quoted.

0.3.5 - 2015-01-15

0.3.4 - 2015-01-13

  • Allow hook providers to default args in hooks.yaml

0.3.3 - 2015-01-06

  • Improve message for CalledProcessError

0.3.2 - 2014-10-07

  • Fix for staged_files_only with color.diff = always #176.

0.3.1 - 2014-10-03

  • Fix error clobbering #174.
  • Remove dependency on plumbum.
  • Allow pre-commit to be run from anywhere in a repository #175.

0.3.0 - 2014-09-18

  • Add --files option to pre-commit run

0.2.11 - 2014-09-05

  • Fix terminal width detection (broken in 0.2.10)

0.2.10 - 2014-09-04

  • Bump version of nodeenv to fix bug with ~/.npmrc
  • Choose python more intelligently when running.

0.2.9 - 2014-09-02

  • Fix bug where sys.stdout.write must take bytes in python 2.6

0.2.8 - 2014-08-13

  • Allow a client to have duplicates of hooks.
  • Use --prebuilt instead of system for node.
  • Improve some fatal error messages

0.2.7 - 2014-07-28

  • Produce output when running pre-commit install --install-hooks

0.2.6 - 2014-07-28

  • Print hookid on failure
  • Use sys.executable for running nodeenv
  • Allow running as python -m pre_commit

0.2.5 - 2014-07-17

  • Default columns to 80 (for non-terminal execution).

0.2.4 - 2014-07-07

  • 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 - 2014-06-25

  • Freeze ruby building infrastructure
  • Fix bug that assumed diffs were utf-8

0.2.2 - 2014-06-22

  • Fix filenames with spaces

0.2.1 - 2014-06-18

  • Use either pre-commit or python -m pre_commit.main depending on which is available
  • Don't use readlink -f

0.2.0 - 2014-06-17

  • 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 - 2014-06-11

  • Fixed bug with autoupdate setting defaults on un-updated repos.

0.1.0 - 2014-06-07

  • Initial Release