- fix: normalize lefthook path for sh script (#1383) by @AndrewKahr
- fix: normalize
rootto always include trailing slash before path replacement (#1381) by @Copilot - fix: skip pty allocation when stdout is not a terminal (#1393) by @technicalpickles
- docs: upgrade docmd (#1391) by @mrexox
- fix: log full scoped name for skipped jobs (#1291) by @scop
- fix: do not pipe stdout and stderr (#1382) by @mrexox
- deps: April 2026 (#1375) by @mrexox
- docs: update documentation and docs for claude (#1373) by @mrexox
- fix: git repository merge issue (#1372) by @mrexox
- fix: use pre-push stdin for push file detection (#1368) by @supitsdu
- chore: small cleanup (#1370) by @mrexox
- fix: prevent
lefthook runfrom overwriting global hooks (#1371) by @ivy - chore: upgrade to 2.11.4 (#1362) by @scop
- chore: fix golangci-lint version lookup by @mrexox
- chore: move golangci-lint version to .tool-versions (#1349) by @scop
- pkg: fix scripts (#1348) by @mrexox
- fix: bring back {lefthook_job_name} template (#1347) by @mrexox
- pkg: refactor packaging (2) (#1346) by @mrexox
- fix: separate more commands' non-option args with -- (#1339) by @scop
- docs: change logo to point to landing page instead of itself (#1343) by @igas
- pkg: make it easier to read (#1340) by @mrexox
- pkg: refactor packaging scripts (#1308) by @mrexox
- chore: switch artifact attestations gen to actions/attest v4 (#1338) by @scop
- chore: describe ENV variables usage in CLI help output (#1337) by @mrexox
- fix: support git debug versions (#1334) by @mrexox
- deps: March 2026 (#1330) by @mrexox
- feat: update minimum go version (#1331) by @mrexox
- feat: introduce setup hook option (#1326) by @mrexox
- refactor: recovering logic for changesets (#1324) by @mrexox
- fix: rollback auto-staged changes if unwanted changes detected (#1251) by @tuchfarber
- docs: improve docs ui (#1323) by @mrexox
- docs: additional skip example and note about reinstallation (#1319) by @iloveitaly
- docs: fix incorrect --verbose usage (#1318) by @iloveitaly
- pkg: fix python packages publishing by @mrexox
- ci: fix publishing to PyPi by @mrexox
- fix: reset colors on config read (#1309) by @mrexox
- chore: reduce verbosity of hints in lefthook install (#1303) by @joevin-slq-docto
- docs: add missing /v2 suffix for go get -tool (#1304) by @alexandregv
- ci: skip Python publishing by @mrexox
- chore: fancy wording and indentation for hits by @mrexox
- feat: check core.hooksPath when lefthook install (#1292) by [@joevin-slq-docto][]
- feat: allow installing non-git hooks (#1301) by @mrexox
- chore: timeout cleanup (#1297) by @mrexox
- feat: add timeout argument (#1263) by @franzramadhan
- deps: January 2026 (#1285) by @mrexox
- pkg: pack one binary per platform into python wheels (#1181) by @danfimov
- fix: accept string in file_types (#1288) by @scop
- docs: elaborate on when to refetch and failure mode (#1287) by @scop
- fix: try reading direct file instead of all remotes (#1243) by @mrexox
- perf: [breaking] skip ghost hook when hooks are already configured (#1255) by @WooWan
- chore: upgrade to 2.8.0 (#1278) by @scop
- docs: clarify remote settings (#1260) by @mrexox
- feat: skip scripts if args given with empty file template (#1277) by @mrexox
- fix: skip if any files template is empty (#1275) by @mrexox
- feat: add jsonc support (#1274) by @mrexox
- deps: switch from gopkg.in/yaml.v3 to go.yaml.in/yaml/v3 (#1261) by @scop
- fix: don't install custom hooks to hooks dir (#1246) by @scop
- deps: December 2025 (#1209) by @mrexox
- fix: set extends to empty slice after loading remotes (#1259) by @mrexox
- fix: allow custom hooks in JSON schema by updating generator (#1250) by @jeonghoon11
- docs: remove duplicate config: false description (#1245) by @scop
- chore: add more tests (#1244) by @mrexox
- chore: small changes on diff printing (#1242) by @mrexox
- feat: ability to show diff when failing on changes (#1227) by @scop
- fix: make short status parser more robust (#1236) by @scop
- docs: fix readme (#1235) by @matdibu
- feat: refetch and cleanup on ref change (#1210) by @mrexox
- ci: npm trusted publishing (#1234) by @mrexox
- feat: more rudimentary shell completions (#1230) by @scop
- feat: add no_auto_install to lefthook.yml (#1231) by @pavelzw
- fix: skip if empty files template (#1233) by @mrexox
- fix: skip pre commit hook if no staged files (#1229) by @mrexox
- fix: do not try to hash-object directories (#1220) by @scop
- fix: check and report Scanner errors (#1222) by @scop
- refactor: command executor tweaks (#1224) by @scop
- refactor: remove some redundant code (#1221) by @scop
- fix: improve separation of options and filenames for more git commands (#1225) by @scop
- chore: upgrade golangci-lint to 2.7.1, add godoclint (#1223) by @scop
- chore: remove unnecessary .svg executable permissions (#1219) by @scop
- fix: do not escape custom templates in command replacement (#1213) by @joevin-sql-docto
- fix: prefer using lefthook from the $PATH (#1211) by @joevin-sql-docto
- feat: save original executable location in hooks (#1208) by @mrexox
- docs: encourage python install using pipx (#1207) by @franzramadhan
- feat: add optional args to scripts (#1206) by @mrexox
- deps: November 2025 (#1200) by @mrexox
- chore: upgrade golangci-lint to 2.6.1, add modernize (#1190) by @scop
- chore: publish artifact attestations (#1189) by @scop
- fix: glob_matcher jsonschema values
- feat: add optional standard glob matcher (doublestar) (#1188) by @jasonwbarnett
Breaking changes
excludeoption no longer accepts regexp, only globs.skip_outputoption is dropped, useoutputinstead.- Some CLI arguments have changed their names to make it more consistent. See
lefthook run -hfor details. - for
onlyandskipoptions with- run: '...'values the command executer was changed to Bourne Shell.
Commits
- fix: accept --fail-on-changes=false as override value (#1168) by @mrexox
- feat: [breaking] use sh as command executor on Windows (#1166) by @mrexox
- refactor: [breaking] drop support for exclude regexp (#1162) by @mrexox
- refactor: [breaking] drop deprecated skip_output option (#1159) by @mrexox
- refactor: [breaking] use another cli framework (#1155) by @mrexox
- chore: a small cleanup by @mrexox
- refactor: use semver to check versions (#1152) by @mrexox
- fix: add comprehensive tests for spinner name formatting (#1145) @technicalpickles
- docs: add LEFTHOOK_BIN environment variable to documentation (#1151) @technicalpickles
- chore: tests improvements (#1148) by @mrexox
- chore: fix naming for integration tests (#1146) by @mrexox
- docs: use codecov coverage badge by @mrexox
- ci: codecov (#1147) by @mrexox
- docs: use actual latest version (#1143) by @mrexox
- docs: add exclude to hook-level settings by @mrexox
- fix: add exclude option to hook level (#1141) by @mrexox
- fix: allow skipping groups (#1140) by @mrexox
- feat: inherit file_types from parent jobs (#1135) by @mrexox
- fix: move gen at root (#1133) by @mrexox
- refactor: better scope subpackages (#1132) by @mrexox
- feat: add no stage fixed argument (#1130) by @mrexox
- refactor: reduce the amount of code in a single file (#1131) by @mrexox
- fix: re-evaluate status for changeset (#1129) by @mrexox
- refactor: reduce the amount of code in a single file (#1118) by @mrexox
- chore: update issue templates by @mrexox
- docs: add fail_on_changes to configuration/README.md (#1119) by @7crabs
- docs: update go installation note (#1117) by @leakedmemory
- fix: use batched cmd for calculating git hashes (#1116) by @mrexox
- fix: add mutex to prevent concurrent git adds (#1115) by @mrexox
- refactor: improve structuring (#1103) by @mrexox
- feat: fail on change (#1095) by @olivier-lacroix
- fix: set --force for git add command (#1104) by @michaelm
- feat: recursively log successful results in summary (#1108) by @siler
- fix: groups with successes and skips are successful (#1107) by @siler
- deps: September 2025 (#1102) by @mrexox
- feat: add tags argument (#1101) by @mrexox
- chore: bump github.com/go-viper/mapstructure/v2 (#1094)
- feat: add MIME types to file_types filters (#1092)
- fix: respect LEFTHOOK_CONFIG in lefthook install (#1090) by @TECHNOFAB11
- docs: update pnpm installation note (#1089) by @skoch13
- docs: improve wording of
run,files, andfiles-globalconfig descriptions, document that theshshell is used (#1086) by @ItsHarper - docs: 404 for local-config (#1082) by @rammanoj
- docs: fix typo (#1079) by @eai04191
- feat: add implicit template lefthook_job_name (#1074)
- docs: restructure documentation (#1075) by @mrexox
- feat: allow overriding config path using LEFTHOOK_CONFIG env (#1072) by @TECHNOFAB11
- feat: add check-install command (#1064) by @mrexox
- chore: only check if local configs exist by @mrexox
- feat: allow using local config only (#1071) by @sj26
- feat: allow installing only specific hooks (#1069)
- refactor: [breaking] restructure files and folders, remove deprecated options (#1067)
- fix: race condition on repo state (#1066)
- feat: add exclude arg (#1063)
- feat: inherit group envs (#1061)
- fix: apply implicit staged files filter to all files when all files arg given (#1062)
- deps: bump github.com/kaptinlin/jsonschema to 0.4.5
- deps: bump github.com/knadh/koanf/parsers/yaml to 1.1.0
- deps: bump github.com/knadh/koanf/v2 to 2.2.1 (#1043)
- fix: friendlier updater error message
- fix: bump goreleaser
- feat: show time for jobs (#1044) by @adeebshihadeh
- ci: update GoReleaser configurations (#1040) by @emmanuel-ferdman
- feat: support devbox (#1031) by @misogihagi
- chore: regexp use improvements (#1034) by @scop
- chore: upgrade golangci-lint to v2, address findings (#1027) by @scop
- deps: May 2025 (#1024) by @mrexox
- fix: load scripts from .config too (#1018) by @mrexox
- chore: change "existed" to "existing" (#1022) by @assyrus-favolo
- docs: fix grammatical error in
Local configsection (#1019) by @dev-kas
- feat: load from .config dir (#1017) by @mrexox
- feat: complete all job names, recursively (#1015) by @scop
- docs: update links to mise by @mrexox
- deps: koanf and jsonschema (#1013) by @mrexox
- feat: add support for mise (#1007) by @shahar-py
- deps: bump github.com/pelletier/go-toml/v2 from 2.2.3 to 2.2.4 (#1005) (#1006) by @mrexox
- feat: add support for uv (#1004) by @toshok
- fix: better logging (#1003) by @mrexox
- feat: allow installing hooks in CI (#1001) by @caugner
- deps: Dependencies upgrade @mrexox
- fix: sh lookup on Windows (#997) by @mrexox
- fix: fix command execution error on Windows #989 (#992) by @atsushifx
- fix: avoid error logging when determining pre push files (#995) by @mrexox
- docs: allow duplicate files in SUMMARY (#988) by @mrexox
- fix: unquote paths to valid UTF-8 (#987) by @mrexox
- packaging: aur fixes (#985) by @mrexox
- fix: print git errors (#984) by @mrexox
- packaging: maintain lefthook-bin AUR package (#982) by @mrexox
- chore: fancier logging (#983) by @mrexox
- docs: remove a note about the difference for unix-like and windows by @mrexox
- feat: support lefthook as go tool (#976) by @nmoniz
- fix: use dedicated build path for swift plugin (#978) by @csjones
- deps: March 2025 (#977) by @mrexox
- docs: update pnpm install command in the installation guide (#974) by @hoosierhuy
- deps: bump github.com/spf13/cobra from 1.8.1 to 1.9.1 (#952) (#958) by @mrexox
- fix: add $schema property (#942) by @mst-mkt
- deps: bump github.com/briandowns/spinner from 1.23.1 to 1.23.2 (#935) (#940) by @mrexox
- feat: allow providing a list of globs (#937) by @mrexox
- fix: properly inherit exclude options when not overwritten (#936) by @mrexox
- feat: add custom plain templates (#930) by @mrexox
- fix: unique names for nested operations (#931) by @mrexox
- fix: use lefthook option in ghost hook too (#929) by @mrexox
- feat: add schema.json to npm packages (#928) by @mrexox
- fix: increase timeout for self-update to 2 mins by @mrexox
- feat: add lefthook option for custom path or command (#927) by @mrexox
- chore: update config template with new jobs by @mrexox
- fix: avoid skipping pre commit when deleted files staged (#925) by @mrexox
- fix: use roots from jobs for possible npm package location (#924) by @mrexox
- deps: January 2025 (#926) by @mrexox
- feat: add validate command (#915) by @mrexox
- feat: inherit exclude option in groups (#916) by @mrexox
- chore: auto generate json schema (#914) by @mrexox
- feat: run --jobs completion (#913) by @scop
- ci: add gzipped linux aarch64 binary to release artifacts (#908) by @mrexox
- feat: add ability to specify job names for command run (#904) by @mrexox
- ci: add linux aarch64 binary to release (#903) by @mrexox
- ci: fix aur build (#905) by @mrexox
- chore: add minimum git version support warning (#886) by @mrexox
- fix: reorder available hooks list (#884) by @scop
- docs: correct typo in 'Scoop for Windows' section (#883) by @Daniil-Oberlev
- refactor: [breaking] replace viper with koanf (#813) by @mrexox
- ci: fix packages release (#881) by @mrexox
- ci: automate publishing to cloudsmith (#875) by @mrexox
- feat: add option to skip running LFS hooks (#879) by @zachah
- ci: fix goreleaser update changes (#874) by @mrexox
- deps: November 2024 (#867) by @mrexox
- docs: add docs for fnm configuration (#869) by @vasylnahuliak
- docs: add
outputto list of config options (#868) by @cr7pt0gr4ph7
- chore: fix linter and tests by @mrexox
- feat: add refetch_frequency parameter to settings (#857) by @gabriel-ss
- docs: call commitizen properly (#858) by @politician
- chore: bump Go to 1.23 (#856) by Valentin Kiselev
- fix: skip git lfs hook when calling manually (#855) by Valentin Kiselev
- fix: [breaking] don't auto-install lefthook with npx if not found (#602) by @anthony-hayes
- fix: [breaking] execute files command within configured root (#607) by @mrexox
- fix: calculate hashsum of the full config (#854) by @mrexox
- feat: support globs in extends (#853) by @mrexox
- docs: simplify configuration docs (#851) by @mrexox
- feat: add skip option merge-commit (#850) by @mrexox
- ci: parallelize publishing (#847) by @mrexox
- fix: increase self update download timeout (#849) by @mrexox
- docs: update docs with new packages (#848) by @mrexox
- feat: maintain Python package too (#845) by @mrexox
- ci: generate apk files (#843) by @mrexox
- docs: mention to uninstall npm package (#842) by @mrexox
- chore: hide remaining wiki links (#841) by @midskyey
- docs: update info about merge order (#838) by @mrexox
- docs: actualize (#831) by @mrexox
- fix: force remote name origin when using remotes (#830) by @mrexox
- deps: September 2024 (#829) by @mrexox
- chore: enhance some code parts (#824) by @mrexox
- fix: quote script path (#823) by @mrexox
- docs: fix typo for command names in configuration.md (#814) by @nack43
Fix lefthook NPM package to include OpenBSD package as optional dependency.
- deps: July 2024 (#795) by @mrexox
- packaging(npm): try direct reference for lefthook executable (#794) by @mrexox
- fix: npm fix packages (#789) by @mrexox
- fix: explicitly pass static flag to linker (#788) by @mrexox
- ci: update workflow files (#787) by @mrexox
- ci: use latest goreleaser (#784) by @mrexox
- feat: allow list of files in exclude option (#772) by @mrexox
- docs: add docs for LEFTHOOK_OUTPUT var (#771) by @manbearwiz
- fix: use direct lefthook package (#774) by @mrexox
- fix: publishing (#765) by @mrexox
- perf: startup time reduce (#705) by @dalisoft
- docs: add a note about pnpm package installation (#761) by @mrexox
- ci: retriable integrity tests (#758) by @mrexox
- ci: universal publisher with Ruby script (#756) by @mrexox
- fix: apply local extends only if they are present (#754) by @mrexox
- chore: setting proper error message for missing lefthook file (#748) by @Cadienvan
- fix: skip overwriting hooks when fetching data from remotes (#745) by @mrexox
- fix: fetch remotes only for non ghost hooks (#744) by @mrexox
- feat: add refetch option to remotes config (#739) by @mrexox
- deps: June, 3, lipgloss (0.11.0) and viper (1.19.0) (#742) by @mrexox
- chore: enable copyloopvar, intrange, and prealloc (#740) by @scop
- perf: delay git and uname commands in hook scripts until needed (#737) by @scop
- chore: refactor commands interfaces (#735) by @mrexox
- chore: upgrade to 1.59.0 (#738) by @scop
- fix: share STDIN across different commands on pre-push hook (#732) by @tdesveaux and @mrexox
- feat: expand Swift integration with Mint support (#724) by @levibostian
- deps: May 22 dependencies update (#706) by @mrexox
- chore: remove go patch version in go.mod (#726) by @mrexox
- fix: more verbose error on versions mismatch (#721) by @mrexox
- fix: enable interactive scripts (#720) by @mrexox
- feat: add run --no-auto-install flag (#716) by @mrexox
- fix: add
--porcelaintogit status --short(#711) by @110y - chore: bump go to 1.22 (#701) by @mrexox
- fix: enable interactive inputs for windows (#696) by @mrexox
- fix: add batching to implicit commands (#695) by @mrexox
- fix: command argument count validations (#694) by @scop
- fix: re-download remotes when called install with -f (#692) by @mrexox
- chore: remove redundant parallelisation (#690) by @mrexox
- chore: refactor Result handling (#689) by @mrexox
- fix: fallback to empty tree sha when no upstream set (#687) by @mrexox
- feat: add priorities to scripts (#684) by @mrexox
- deps: By April, 1 (#678) by @mrexox
- fix: don't apply empty patch files on pre-commit hook (#676) by @mrexox
- docs: allow only comma divided tags (#675) by @mrexox
- chore: add more tests on skip settings by @mrexox
- chore: add more linters, address findings (#670) by @scop
- chore: skip printing deprecation warning (#674) by @mrexox
- feat: handle
runcommand in skip/only settings (#634) by @prog-supdex - deps: Dependencies March 2024 (#673) by @mrexox
- fix: fix printing when using
outputlog setting (#672) by @mrexox - feat: Add output setting (#637) by @prog-supdex
- fix: use swift package before npx (#668) by @mrexox
- feat: use configurable path to lefthook (LEFTHOOK_BIN) (#653) by @technicalpickles
- fix: decrease max cmd length for windows (#666) by @mrexox
- deps: Dependencies 04.03.2024 (#664) by @mrexox
- chore: fix Makefile by @mrexox
- docs: fix redundant option by @mrexox
- deps: update uniseg (#650) by @technicalpickles
- deps: Dependencies (27.02.2024) (#648) by @mrexox
- chore: remove adaptive colors (#647) by @mrexox
- docs: update request help url (#641) by @sbsrnt
- fix: respect roots in commands for npm packages (#616) by @mrexox
- fix: don't capture STDIN without interactive or use_stdin options (#638) by @technicalpickles
- fix: handle LEFTHOOK_QUIET when there is no skip_output in config by @prog-supdex
- docs: add stage_fixed to the examples by @mrexxo
- docs: clarify the difference between piped and parallel options by @mrexox
- feat: add remotes and configs options (#609) by @NikitaCOEUR
- feat: add replaces to all template and parse files from stdin (#596) by @sanmai-NL
- feat: shell completion improvements (#577) by @scop
- fix: safe execute git commands without sh wrapper (#606) by @mrexox
- fix: use lefthook package with npx (#604) by @mrexox
- feat: allow setting a bool value for skip_output (#601) by @nsklyarov
- docs: update exception case about interactive option by @mrexox
- fix: use empty stdin by default (#590) by @mrexox
- feat: add priorities to commands (#589) by @mrexox
- chore: add typos fixer by @mrexox
- fix: drop new argument for git diff compatibility (#586) by @mrexox
- fix: don't check checksum file when explicitly calling lefthook install (#572) by @mrexox
- chore: skip summary separator if nothing is printed (#575) by @mrexox
- docs: update info about root option by @mrexox
- feat: add force flag to run command (#561) by @mrexox
- fix: do not enable export when sourcing rc file (#553) by @hyperupcall
- chore: wrap shell args in quotes for consistency by @mrexox
- docs: add a note that files template supports directories by @mrexox
- feat: initial support for Swift Plugins (#556) by @csjones
- chore: output enhancements (#549) by @mrexox
- feat: add interrupt (Ctrl-C) handling (#550) by @mrcljx
- docs: update docs and readme with tl;dr instructions (#548) by @mrexox
- fix: add use_stdin option for just reading from stdin (#547) by @mrexox
- chore: refactor commands passing (#546) by @mrexox
- fix: fail on non existing hook name (#545) by @mrexox
- fix: split command with file templates into chunks (#541) by @mrexox
- chore: add git-cliff config for easier changelog generation by @mrexox
- fix: allow empty staged files diffs (#543) by @mrexox
- chore: fix linter issues (#537) by @mrexox
- feat: add files, all-files, and commands flags (#534) by @nihalgonsalves
- chore: bump go to 1.21 (#536) by @nihalgonsalves
- feat: add assert_lefthook_installed option (#533) by @mrexox
- chore: add Add docs to PR template (#532) by @technicalpickles
- feat: add support for skipping empty summaries (#531) by @technicalpickles
- docs: add scoop installation method (#527) by @sitiom
- fix: correct merging of extends from remote config (#529) by @mrexox
- ci: add Winget Releaser action (#526) by @sitiom
- chore: improve correctness of load_test.go (#525) by @hyperupcall
- fix: do not print extraneous newlines when executionInfo output is hidden (#519) by @hyperupcall
- fix: uninstall all possible formats (#523) by @mrexox
- fix: LEFTHOOK_VERBOSE properly overrides --verbose flag (#521) by @hyperupcall
- feat: support .lefthook.yml and .lefthook-local.yml (#520) by @hyperupcall
- docs: improve documentation and examples (#517) by @hyperupcall
- fix: improve hook template (#516) by @hyperupcall
- fix: don't render bold ANSI sequence when colors are disabled (#515) by @adam12
- deps: July 2023 (#514) by @mrexox
- deps: June 2023 (#499)
- feat: support toml dumpint (#490) by @mrexox
- feat: support json configs (#489) by @mrexox
- fix: add win32 binary to artifacts (by @mrexox)
- feat: allow dumping with JSON (#485 by @mrexox
- feat: add skip execution_info option (#484) by @mrexox
- deps: from 05.2023 (#487) by @mrexox
- feat: add adaptive colors (#482) by @mrexox
- fix: skip output for interactive commands if configured (#483) by @mrexox
- feat: add dump command (#481) by @mrexox
- feat: add execution_out to skip output settings (#475) by @mrexox
- chore: add debug logs when hook is skipped (#474) by @mrexox
- feat: don't show when commands are skipped because of no matched files (#468) by @technicalpickles
- feat: allow extra hooks in local config (#462) by @fabn
- feat: pass numeric placeholders to files command (#461) by @fabn
- fix: make hook template compatible with shells without source command (#458) by @mdesantis
- fix: allow globs in skip option (#457) by @mrexox
- deps: dependencies update (March 2023) (#455) by @mrexox
- fix: don't fail on missing config file (#450) by @mrexox
- fix: stage fixed when root specified (#449) by @mrexox
- feat: implitic skip on missing files for pre-commit and pre-push hooks (#448) by @mrexox
- fix: restore release assets name (#437) by @watarukura
- fix: Use correct branch for {push_files} template (#429) by @mrexox
- feature: Skip unstaged changes for pre-commit hook (#402) by @mrexox
- fix: Make info dir when it is absent (#414) by @sato11
- deps: bump github.com/mattn/go-isatty from 0.0.16 to 0.0.17 (#409) by @dependabot
- deps: bump github.com/briandowns/spinner from 1.19.0 to 1.20.0 (#406) by @dependabot
- fix: Double quote eval statements with $dir (#404) by @jrfoell
- chore: Add PR template (#401) by @mrexox
- chore: Fix yml syntax missing colon (#399) by @aaronkelton
- feature: Allow following output (#397) by @mrexox
- fix: Remove quotes for rc in template (#398) by @mrexox
- feature: Add an option to disable spinner (#396) by @mrexox
- feature: Use pnpm before npx (#393) by @mrexox
- chore: Use lipgloss for output (#395) by @mrexox
- feature: Expand env variables (PR #391 by @mrexox)
- deps: Update important dependencies (PR #389 by @mrexox)
- chore: Add FreeBSD OS to packages (PR #377 by @mrexox)
- feature: Skip based on branch name and allow global skip rules (PR #376 by @mrexox)
- fix: Omit LFS output unless it is required (PR #373 by @mrexox)
- fix: Remove quoting for scripts (PR #371 by @stonesbg + @mrexox)
- fix: remove lefthook.checksum on uninstall (PR #370 by @JuliusHenke)
- fix: Print prepare-commit-msg hook if it exists in config (PR #368 by @mrexox)
- fix: Allow changing refs for remote (PR #363 by @mrexox)
- fix: Full support for interactive commands and scripts (PR #352 by @mrexox)
- chore: Remove deprecated config options (PR #351 by @mrexox)
- feature: Add remote config support (PR #343 by @oatovar and @mrexox)
- ci: Fix snapcraft trying to create dirs in parallel by @mrexox
- feature: Allow setting env vars (PR #337 by @mrexox)
- feature: Show current running command and script name(s) (PR #338 by @mrexox)
- feature: Exclude by command names too (PR #335 by @mrexox)
- fix: Don't uninstall lefthook.yml and lefthook-local.yml by default (PR #334 by @mrexox)
- fix: Fixing typo in gemspec (PR #333 by @kerrizor)
- Fix regression from #314 (chmod missed fix) (PR #330 by @ariccio)
- Pass stdin by default (PR #324 by @mrexox)
- Add goreleaser action (PR #307 by @mrexox)
- Windows escaping issues (PR #314 by @mrexox)
- Check for lefthook.bat in hook template (PR #316 by @mrexox)
- Update node.md docs (PR #312 by @fantua)
- Move postinstall script to main lefthook NPM package (PR #311 by @mrexox)
- Allow suppressing execution output (PR #309 by @mrexox)
- Update dependencies (PR #308 by @mrexox)
- Add support for Git LFS (PR #306 by @mrexox)
- Bump Go version to 1.19 (PR #305 by @mrexox)
- Add tests on runner (PR #304 by @mrexox)
- Add fail text option (PR #301 by @mrexox)
- Store lefthook checksum in non-hook file (PR #280 by @mrexox)
- Submodules issue (PR #300 by @mrexox)
- Remove rspec tests (PR #299 by @mrexox)
- Add
when "mingw" then "windows"case (PR #297 by @ariccio) - Define security policy and contact method (PR #293 by @Envek)
- Fix NPM package
- Update email information
- Bring auto install back (PR #286 by @mrexox)
- Move main.go to root (PR #285 by @mrexox)
- Panic on commands structure misuse (PR #284 by @mrexox)
- Split npm package by os and cpu (PR #281 by @mrexox)
- Fix folders structure for
[@evilmartians](https://github.com/evilmartians)/lefthookand[@evilmartians](https://github.com/evilmartians)/lefthook-installerpackages - Fix folders structure for
lefthookgem
- Refactoring (PR #275 by @mrexox, @skryukov, @markovichecha)
- Replace deprecated
File.exists?withexist?for Ruby script (PR #263 by @pocke)
- Allow skipping hooks in certain git states: merge and/or rebase (PR #173 by @DmitryTsepelev)
- NPM: installer package that downloads the required binaries during installation (PR #188 by @aminya, PR #273 by @Envek)
- Add ability to skip summary output. Also support a
LEFTHOOK_QUIETenv variable (PR #187 by @washtubs) - Make filename globs case-insensitive (PR #196 by @skryukov)
- Fix lefthook binary extension on Windows (PR #188 by @aminya)
- Stop building 32-bit binaries for releases due to low usage (@Envek)
- Allow lefthook to work when node_modules is not in root folder for npx (PR #224 by @spearmootz)
- Fix unreachable conditional in hook template (PR #242 by @dannobytes)
- Add cpu arch and os arch to lefthook's filepath in hook template (PR #260 by @rmachado-studocu)
- Fix incorrect npx command in git hook script template (PR #236) @PikachuEXE
- Update project URLs in NPM package.json (PR #235) @PikachuEXE
- Pass all arguments to downstream hooks (PR #231) @pablobirukov
- Allows lefthook to work when node_modules is not in root folder for npx (PR #224) @spearmootz
- Do not initialize git config on
helpandversioncommands (PR #209) @pwinckles - node: fix postinstall: process.cwd is a function and should be called @Envek
- Fix lefthook binary extension on Windows. @aminya
- PR #193 Fix path for searching npm-installed binary when in worktree. @Envek
- NPM, RPM, and DEB packaging fixes. @Envek
- PR #179 Fix running on Windows under MSYS and MINGW64 when run from Ruby gem or JS npm package. @akiver, @Envek
- PR #177 Support non-default git hooks path. @charlie-wasp
- PR #182 Support git workspaces and submodules. @skryukov
- PR #184 Rewrite npm's scripts in JavaScript to support running on Windows without
sh. @aminya
- PR Improve check for installed git @DmitryTsepelev
- PR Create .git/hooks directory when it does not exist @DmitryTsepelev
- PR Package versions for all architectures (x86_64, ARM64, x86) into Ruby gem and NPM package @Envek
- PR Fix golang 15+ build @skryukov
-
PR Fix
npxwhen onlyyarnexists. Thanks @dotterian
-
PR Fix
shdependency on windows when executinggit. Thanks @lionskape -
PR Add possibility for using
yamlandymlextension for config. Thanks @rbUUbr
-
Commit Skip before executing command
-
PR Add option --keep-config. Thanks @justinasposiunas
-
Commit Check if shell is non interactive
- PR Use eval instead of exec; Enable tty for the shell. Thanks @ssnickolay
-
Commit Commands and Scripts now can catch Stdin
-
Commit Add partial support for monorepos and command execution not from project root
-
PR Support postinstall script for npm installation for monorepos. Thanks @sHooKDT
-
PR Now relative path to scripts supported. Thanks @AlexeyMatskevich
-
Commit Option
extendsfor top level config added. Now you can merge some settings from different places:
extends: $HOME/work/lefthook-extend.yml- Commit Add examples to generated lefthook.yml
- Commit Add
-ameansaggressivestrategy forinstallcommand
lefthook install -a # clear .git/hooks dir and reinstall lefthook hooks-
Commit Add Lefthook version indicator for commands and script execution
-
Commit Remove
npxas dependency from node wrapper
Now we will call directly binary from ./node_modules
- Commit Add
-fmeansforcestrategy forinstallcommand
lefthook install -f # reinstall lefthook hooks without sync info check- PR #27 Move LEFTHOOK env check in hooks files
Now if LEFTHOOK=0 we will not call the binary file
Add shortcut {push_files}
pre-commit:
commands:
rubocop:
run: rubocop {push_files}
It same as:
pre-commit:
commands:
rubocop:
files: git diff --name-only HEAD @{push} || git diff --name-only HEAD master
run: rubocop {push_files}
- Commit Add
min_versionoption
You can mark your config for minimum Lefthook version:
min_version: 0.6.1
- PR #24 Wrap
runcommand in shell context.
Now in run option available sh syntax.
pre-commit:
commands:
bashed:
run: rubocop -a && git add
Will be executed in this way:
sh -c "rubocop -a && git add"
- PR #23 Search Lefthook in Gemfile.
Now it's possible to use Lefthook from Gemfile.
# Gemfile
gem 'lefthook'