Commit Graph

120 Commits

Author SHA1 Message Date
Jordan Speicher 4cd8b364dd Add: post-rewrite hook support 2021-09-01 14:50:59 -05:00
Florent Clarret 584fd585ec Expose local branch ref as an environment variable 2021-06-19 18:18:14 +02:00
Anthony Sottile 12a7075fda skip installation for SKIP'd hooks 2021-04-10 00:37:59 -07:00
Paweł Sacawa 6b73138c73 Add: post-merge hook support 2021-02-23 19:00:02 -08:00
surafelabebe cb5ed6276d Expose remote branch ref as an environment variable 2021-01-22 13:18:25 -08:00
Anthony Sottile 89ab609732 fix the default value for types_or 2020-11-25 18:21:37 -08:00
Michael Vincent 120d60223a Improve performance by ignoring submodules
When git status runs in a repo with submodules, it'll recursively run
git status in every submodule as well by default (sequentially).
git status is substantially slower on Windows than on Linux. git diff
behaves similarly to git status in terms of running recursively within
all submodules. In repos with hundreds of submodules, this quickly adds
up when git status/diff are called multiple times. Pre-commit runs
git status once at the beginning of an operation and then runs git diff
before and after each hook. These calls quickly add up and make
pre-commit unusable in large repos with lots of submodules.

This commit drastically improves performance in repos with lots of
submodules and fixes #1701 by telling git status and git diff to ignore
submodules. This change is not expected to have any negative effect on
existing hooks because each submodule should manage its own hooks
instead of relying on superproject hooks to manipulate their contents.
2020-11-19 23:26:05 -06:00
Marco Gorelli 62f668fc3f add types_or 2020-11-02 17:25:10 +00:00
Anthony Sottile 24dfeed89c Replace EnvironT with MutableMapping[str, str] 2020-10-28 13:00:25 -07:00
Johan Henkens 4063730925 Save diff between hook executions 2020-08-21 20:41:06 -07:00
Anthony Sottile 5fb721f7a7 normalize slashes even earlier on windows for filenames 2020-06-08 14:53:27 -07:00
Chad Larson 9e0b4a9d4d pre-commit env var exposed 2020-05-23 17:20:26 -05:00
Dom 928938a6a1 fix hooks firing during staged_files_only 2020-05-02 14:00:21 -07:00
ModischFabrications 26adf1d560 add support for post-commit 2020-04-27 10:55:22 -07:00
zjeuhpiung liu 605b39f617 fix CJK characters width in output 2020-03-28 08:06:49 -07:00
Anthony Sottile 53052fe019 Ensure files aren't passed to post-checkout hooks 2020-02-23 11:38:16 -08:00
Anthony Sottile d35b00352f Make more readable --from-ref / --to-ref aliases for --source / --origin 2020-02-23 11:07:57 -08:00
Anthony Sottile 566f1afcd4 Merge pull request #1339 from andrewhare/andrewhare/post-checkout
Add post-checkout
2020-02-23 10:39:28 -08:00
Andrew Hare 18fa004254 Add post-checkout 2020-02-23 10:22:18 -08:00
Joey Espinosa 5258dce73b fix: catch missing arg if using {prepare-}commit-msg stage
If using the prepare-commit-msg and commit-msg stages specifically (such
    as with the try-repo command), the `--commit-msg-filename` arg must be
provided.

[fixes #1336]

chore: improve error message for hook stage check
2020-02-23 10:15:59 -08:00
Anthony Sottile 0bb8a8fabe Move test to install_uninstall test so environment variables apply 2020-01-16 13:02:20 -08:00
David Martinez Barreiro 57cc814b8b Push remote env var details 2020-01-16 12:35:04 -08:00
Anthony Sottile 755b8000f6 move Hook data type to a separate file 2020-01-15 14:20:51 -08:00
Anthony Sottile df40e862f4 More miscellaneous cleanup 2020-01-13 11:47:34 -08:00
Anthony Sottile 49cf490697 Remove noop_context 2020-01-12 13:39:53 -08:00
Anthony Sottile 67c2dcd90d Remove pre_commit.five 2020-01-12 13:39:53 -08:00
Anthony Sottile 9000e9dd41 Some manual .format() -> f-strings 2020-01-12 13:39:53 -08:00
Anthony Sottile 327ed924a3 Add types to pre-commit 2020-01-12 10:15:01 -08:00
Anthony Sottile 30c1e8289f upgrade hooks, pyupgrade pre-commit 2020-01-12 09:27:04 -08:00
Anthony Sottile 97e3371046 Remove deprecated pcre language 2020-01-05 13:58:44 -08:00
Anthony Sottile 0c0427bfbd Add duration to verbose run 2019-12-28 18:20:10 -08:00
Anthony Sottile 01a628d96d Make verbose output less special 2019-12-23 15:51:58 -08:00
Anthony Sottile 6af0e33eed Add top-level files key for inclusion 2019-12-23 12:04:05 -08:00
Anthony Sottile 707407dd49 Normalize paths on windows to forward slashes 2019-10-19 14:45:23 -07:00
Anthony Sottile 7c3404ef1f show color in hook outputs when attached to a tty 2019-10-12 23:17:36 -07:00
Anthony Sottile 2633d38a63 Fix ordering of mixed stdout / stderr printing 2019-10-12 13:35:04 -07:00
Anthony Sottile f612aeb22b Split out cmd_output_b 2019-10-06 15:16:47 -07:00
Michael Adkins 02d95c033c Fixed code style 2019-07-09 13:48:06 -05:00
Michael Adkins c148845a98 Added hook-stage print to output for missing hook id 2019-07-09 13:06:18 -05:00
Mandar Vaze 3d7b374bef Pass correct value to git color based on args.color 2019-06-01 17:33:27 +05:30
Mandar Vaze 64f0178b75 Pass color option to git diff unconditionally 2019-06-01 07:40:20 +05:30
Mandar Vaze 4f4767c9e0 Pass color option to git diff (on failure)
Fixes #1007
2019-05-31 16:42:16 +05:30
Marc Jay 82969e4ba3 Use set rather than list for commit message related stages, remove
default file open modes, tidy up bash call for failing hook test
2019-04-21 21:58:01 +01:00
Marc Jay e60f541559 Adds support for prepare-commit-msg hooks
Adds a prepare-commit-msg hook stage which allows for hooks which add
dynamic suggested/placeholder text to commit messages that an author can
use as a starting point for writing a commit message
2019-04-21 21:07:13 +01:00
Anthony Sottile 668e6415c0 Adjust messaging slightly 2019-03-30 14:05:24 -07:00
Ben Norquist 71a740d65d add helpful message and test 2019-03-30 14:00:03 -07:00
Anthony Sottile dc28922ccb Run pre-commit autoupdate
Committed via https://github.com/asottile/all-repos
2019-03-21 21:09:33 -07:00
Anthony Sottile b1389603e0 Speed up filename filtering.
Before there was a `getcwd` syscall for every filename which was filtered.

Instead this is now cached per-run.

- When all files are identified by filename only: ~45% improvement
- When no files are identified by filename only: ~55% improvement

This makes little difference to overall execution, the bigger win is
eliminating the `memoize_by_cwd` hack.  Just removing the memoization would
have *increased* the runtime by 300-500%.
2019-01-23 20:48:41 -08:00
Anthony Sottile bd65d8947f Implement default_stages 2019-01-06 10:32:58 -08:00
Anthony Sottile bdc58cc33f Teach pre-commit try-repo to clone uncommitted changes 2019-01-01 15:01:36 -08:00