- Add
**/*.svg
toImageOptim
default includes configuration - Make
IndexTags
hooks quiet by default - Add
Vint
pre-commit hook that checks Vim script with Vint
- Add
required_library
/required_libraries
hook option which specifies a list of paths a hook should load withKernel.require
before running - Add
JsLint
pre-commit hook that checks the style of JavaScript files with JSLint - Add
RubyLint
pre-commit hook that statically analyzes Ruby files with ruby-lint - Add
Jsl
pre-commit hook that checks the style of JavaScript files with JavaScript Lint - Add
CapitalizedSubject
commit message hook - Add
GoVet
pre-commit hook that examines Go source files with vet - Add
XmlSyntax
pre-commit hook to check that XML files are valid - Add
CaseConflicts
pre-commit hook which checks for file names in the same directory which differ by letter casing - Preserve existing git hooks in a repository when installing Overcommit hooks, and restore them on uninstall
- Add
RSpec
pre-push hook that runs RSpec tests before pushing to remote - Add
ProtectedBranches
pre-push hook that prevents destructive pushes (deletions or force pushes) to specified branches - Add
SpellCheck
commit-msg hook to check commit messages for misspelled words - Add support for
pre-rebase
hooks - Add
SubmoduleStatus
post-checkout
,post-commit
,post-merge
, andpost-rewrite
hooks that warn when submodules are uninitialized, out of date with the current index, or contain merge conflicts
- Disable
ShellCheck
pre-commit hook by default - Switch
ImageOptim
hook to use executable instead of Ruby API - Improve
CoffeeLint
pre-commit hook to differentiate between errors and warnings - Improve
GoLint
pre-commit hook to extract file and line information - Change configuration loading behavior to prefer user-defined
ALL
hook configuration over defaultALL
configuration, and user-defined hook configuration over defaultALL
configuration - Change hook summary message to mention warnings if there were any
- Disable almost all hooks by default. You will now need to explicitly enable
almost all hooks yourself in your
.overcommit.yml
. If you are migrating fromovercommit
0.23.0 and want to use the default configuration that shipped with that version, copy the default configuration from 0.23.0 - Update
ScssLint
pre-commit hook to properly handle special exit code that signals all files were filtered by exclusions (new as ofscss-lint
0.36.0) - Update
childprocess
dependency to minimum 0.5.6 - Change default value for
problem_on_unmodified_line
fromwarn
toreport
- Update
Rubocop
pre-commit hook to pass--display-cop-names
flag so cop names appear in output - Drop support for returning
:good
/:bad
results from hooks (was deprecated in 0.15.0) - Remove
PryBinding
pre-commit hook since its functionality is provided by theRubocop
pre-commit hook
- Fix
LocalPathsInGemfile
to not report lints for commented paths - Fix
CssLint
pre-commit hook to ignore blank lines incsslint
output - Fix error instructions typo in
BundleCheck
pre-commit hook - Fix bug where stashed changes were not restored when plugin signature validation failed
- Don't clear working tree after pre-commit hook when only submodule changes are present
- Restore file modification times of unstaged files in addition to staged files in pre-commit hook runs
- Add pre-commit ESLint hook
- Add pre-commit hooks for standard and semistandard JavaScript linters
- Add support for
post-commit
,post-merge
, andpost-rewrite
hooks - Add
GitGuilt
post-commit
hook to display changes in blame ownership for modified files - Add
execute_in_background
helper to provide a standardized way to start long-running processes without blocking the hook run - Add
IndexTags
hook forpost-commit
,post-merge
, andpost-rewrite
hook types so tags index can always be kept up to date viactags
- Add
W3cCss
andW3cHtml
pre-commit hooks which integrate with thew3c_validator
gem - Add
Scalastyle
pre-commit hook that runs scalastyle against Scala code - Add
XmlLint
pre-commit hook to check XML files with xmllint - Add
JavaCheckstyle
pre-commit hook to check style of Java files with checkstyle - Add
Pep8
pre-commit hook to check Python files with pep8 - Add
Pyflakes
pre-commit hook to check Python files with pyflakes - Add
Pep257
pre-commit hook to check Python files with pep257 - Add
HtmlTidy
pre-commit hook to check HTML files with tidy - Add
Pylint
pre-commit hook to check Python files with pylint
- Parse JSHint errors more precisely
- Remove
JsxHint
andJsxcs
pre-commit hooks in favor of using therequired_executable
option on the JsHint and Jscs pre-commit hooks - Change behavior of configuration options containing array values to always replace the old value instead of appending to it
- Change
ImageOptim
hook to fail instead of warn if theimage_optim
gem cannot be found - Remove
ctags_arguments
option fromIndexTags
hooks - Improve
PythonFlake8
pre-commit hook to differentiate between errors and warnings - Improve
CssLint
pre-commit hook to differentiate between errors and warnings
- Fix
--run
flag to consider all lines in all files as modified rather than none - Fix
--run
flag to exclude submodule directories from the list of modified files - Fix handling of files with spaces in their name when calculating modified lines in a file
- Disable
Reek
pre-commit hook by default - Allow
required_executable
to include paths that are in the repo root - Add
command
hook option allowing the actual command that is executed to be configured (useful to invoke command viabundle exec
or similar) - Add
flags
hook option allowing the flags passed on the command line to be configured
- Change
HardTabs
,MergeConflicts
, andPryBinding
pre-commit hooks to bequiet
by default - Switch
TravisLint
pre-commit hook from deprecatedtravis-lint
gem totravis
gem - Add .projections.json configuration file
- Add pre-commit static analysis and linting for sh/bash scripts with ShellCheck
- Use
--verbose
flag when running JSCS to include name of offending rule
- Add
--run
flag which runs all configured pre-commit hooks against the entire repository - Fix installer to work with Overcommit hooks created via
GIT_TEMPLATE_DIR
- Fix hook runner to not display skip message unless hook would have actually run
- Change
ImageOptim
hook to useskip_missing_workers
option and update dependency to 0.18.0 - Remove interactive prompt support from overcommit hooks
- Change hook signing from interactive flow to be done via
overcommit --sign <hook-type>
command
- Add
--no-pngout
flag forimage_optim
command on:fail
message - Fix
Brakeman
pre-commit hook when multiple files have been staged - Reset modification times more frequently when cleaning up the environment after running pre-commit hooks. This should help overcommit work with file watchers a little more nicely.
- Add pre-commit JavaScript style checking with JSXCS
- Add pre-commit Ruby code smell checking with Reek
- Gracefully handle
.git
files that point to an external git directory
- Update minimum version of
image_optim
gem to 0.15.0 (breaking change in name of exception classes) - Add
--list-hooks
flag which displays all hooks for a repository and whether they are enabled/disabled - Add
required_executable
andinstall_command
options that allow a hook to define an executable that must be in thePATH
in order for it to work, and a command the user can use to install the executable if it doesn't exist - All built-in hooks will now fail if the required executable is not present
- Fix bug where pre-commit hook would crash if user attempted to commit a broken symlink
- Add
BrokenSymlinks
pre-commit hook which checks for broken symlinks - Fix Chamber integration
- Fix 'include' path for ChamberSecurity
- Fix bug where commit message from cherry-picked commit would be lost if there were conflicts
- Change commit hook header text to bold instead of bold white so that it displays on terminals with a white background
- Add support for
OVERCOMMIT_DISABLE
environment variable, which when set prevents Overcommit hooks from running - Fix bug that prevented RailsSchemaUpToDate from working in directories that contained decimals
- Warn when trying to pipe commands using the
execute
helper, as this is not supported - Include both standard out/error streams in exception messages in pre-commit hook context
- Fix edge case where hitting Ctrl-C twice rapidly could result in work tree being lost
- Fix edge case where hitting Ctrl-C after all pre-commit hooks had run but before the cleanup had finished would result in a lost working tree
- Handle edge case where if a file was created in the working directory by a separate process in between the working tree being reset and the stash being applied, the hook runner would silently fail
- Prevent stack traces from appearing during early interrupt before Overcommit has loaded its code
- Remove
BundleCheck
post-checkout hook as it was a bit overzealous
- Fix bug where incorrect "hook run interrupted" message displayed when hook run failed
- Gracefully handle
git stash
failures in pre-commit hook runs - Fix
overcommit-hook
auto-updating not passing original arguments to updated hook - Display message when
overcommit-hook
file is automatically updated - Deprecate
:bad
status in favor of:fail
- Deprecate
:good
status in favor of:pass
- Allow hook statuses to be transformed via
on_fail
andon_warn
configuration options - Add
config
attribute as the preferred method to access hook configurations in hook implementations - Generate starter configuration on install with instructions on how to
configure overcommit if an
.overcommit.yml
file does not yet exist - Include name of hook in output (to make it easier to find out which name to use when skipping)
- Fix hook skipping regression
- Ignore
db/structure.sql
inTrailingWhitespace
pre-commit hook - Drop stashed changes after restoring them (now that #55 is fixed)
- Change
JSCS
pre-commit hook to check status code instead of using regex to determine type of error - Fix performance regression where running Overcommit in a repository with a lot of files would be very slow
- Wildcards in include/exclude globs now match files beginning with
.
- Drop support for Ruby 1.8.7
- Prevent
JsonSyntax
pre-commit hook from failing ifjson_class
key is present in JSON - Prevent
HardTabs
pre-commit hook from warning on tabs in Makefiles - Fix bug where
overcommit
hooks would fail for initial commit to repo - Add support for gracefully exiting from Ctrl-C interruptions
- Add
.gitmodules
to the list of ignored files inHardTabs
pre-commit hook
- Skip
HardTabs
pre-commit hook for Golang source files by default - Disable
IndexTags
post-checkout hook by default - Add
GoLint
pre-commit hook which runsgolint
on Golang source files
- Fix bug where
CHERRY_PICK_HEAD
would be lost when a pre-commit hook failed after attempting to cherry pick a commit with a conflict - Drop support for Ruby 1.9.2
- Allow custom arguments to be passed to
ctags
viaIndexTags
post-checkout hook
- Change format of
include
/exclude
file globs to match that of standard shell globbing (e.g.**
matches zero or more directories rather than 1 or more) - Don't drop stashed changes after restoring them
- Fix bug where
MERGE_HEAD
would be lost when attempting to commit a resolution to a merge conflict
- Include
--force-exclusion
flag in Rubocop hook so files excluded via.rubocop.yml
are actually excluded - Add pre-commit
JsxHint
hook which uses the JSXHint project - Add pre-commit
BerksfileCheck
hook which warns you when yourBerksfile.lock
is out of sync with yourBerksfile
- Fix
BundleCheck
to usegit ls-files
instead ofgit check-ignore
, as the latter is only available as of git 1.8 - Fix bug where skipping a hook via the
SKIP
environment variable would incorrectly warn about the hook's configuration having changed - Add
MergeConflicts
pre-commit hook which checks for unresolved merge conflicts in files - Add
RailsSchemaUpToDate
pre-commit hook which checks forschema.rb
/structure.sql
that aren't up-to-date with the latest migration - Add
PryBinding
pre-commit hook which checks forbinding.pry
calls that have been left behind in code - Add
LocalPathsInGemfile
pre-commit hook which checks for gem dependencies pointing to local paths in aGemfile
- Add
JsonSyntax
pre-commit hook which checks the syntax of all.json
files - Add
Brakeman
pre-commit hook which runs security checks against code (disabled by default as it is slow) - Add
ChamberSecurity
pre-commit hook which ensures thatchamber secure
has been run before committing your changes (see the Chamber gem for more information)
- Add pre-commit
TravisLint
hook which uses the travis-lint gem - Display actual warning message when dependencies aren't satisfied in
post-checkout
BundleCheck
hook - Add support for hook plugin signature verification so that you don't automatically execute repo-specific hooks that changed since you last ran them. See Security for more information
- Automatically update
overcommit-hook
master hook and any other symlinks before hook run. Runovercommit --install
if you're upgrading to save you from having to runovercommit --install
in the future
- Change
command
hook helper signature to accept an array of arguments instead of a shell string - Rename
command
hook helper toexecute
- Add support for JRuby 1.7.9 in Ruby 1.9 mode
- Display more helpful error message when installing Overcommit into a repo that already has non-Overcommit hooks
- Add
--force
flag allowing Overcommit to be installed in repositories that already contain non-Overcommit hooks (overwriting them in the process)
TextWidth
pre-commit hook now supports customized maximum subject line and commit message body widths- Fix bug where committing a change with only file deletions would result in those changes not being committed
- Warn instead of failing when gem dependencies are out of date in
BundleCheck
post-checkout hook
- Fix bug where hook run would crash if hook was unsuccessful but returned no output
- Fix bug where a plugin would fail to load if it had a custom configuration defined
- Breaking changes: plugin framework has been overhauled.
You must now subclass
Overcommit::Hook::<Type>
and implement the methodrun
instead ofrun_check
. Also, the old hook runner no longer works, so you'll need to remove the hooks installed in.git/hooks
and install new ones withovercommit --install
- Configuration for repository can be specified via
.overcommit.yml
file - Can now skip hooks using just
SKIP
instead ofSKIP_CHECKS
environment variable - Add
--template-dir
flag which provides a convenient way to auto-install overcommit via Git template directories - Converted all script-based hook scripts to Ruby-based ones
AuthorEmail
check can be customized so emails match a regexWhitespace
check was split intoHardTabs
andTrailingWhitespace
- Add pre-commit JavaScript style checking with JSCS
- Add
BundleCheck
pre-commit hook which checks ifGemfile.lock
matchesGemfile
- Use per-file
.scss-lint.yml
configuration for staged files
- Remove
RestrictedPaths
pre-commit check
- Added pre-commit check that optimizes images with
image_optim
- Don't include submodules in the list of modified files
- Fix bug where
.rubocop.yml
would not be found in present working directory
- Use per-file
.rubocop.yml
configuration for staged files
- Added Gemfile.lock/bundler checking
- Added
--no-ext-diff
option to git diff - Exposed StagedFile#original_path
- Added check for linting HAML files with haml-lint
- Don't use
--silent
flag withrubocop
for Ruby style check (allows upgrade to Rubocop 0.12.0)
- Teach scss-lint check to downgrade lints on untouched lines as warnings
- Fix "Too many open files" error for very large commits
- Make
StagedFile
tempfile creation lazy - should speed up some checks - Address rare cross-platform compatibility issue by replacing a
which
call with a pure Ruby equivalent - Fix CoffeeScript linter path processing
- Allow specifying multiple file types for checks and syntax check rake files
- Fix bug where checks which returned lists of lines would output incorrectly
- Indent check output lines to nest under check name for better readability
- Fix bug where checks that didn't return strings for output would error
- Teach
StagedFile
s how to calculate which lines were actually added/modified - Checks no longer need to filter temporary staged file paths themselves
- Condense Ruby style check output
- Teach Ruby style check to downgrade style lints on untouched lines as warnings
- Added Ruby code style linting via RuboCop
- Fixed bug where
output
was expected to be a string but was an array in js_syntax
- Fixed bug where
staged
helper inHookSpecificCheck
wasn't returningStagedFile
s
- Resurrect StagedFile for reading index contents rather than disk contents
- Sort plugins alphabetically
- Omit periods from warning messages for consistency
- Enforce single-line commit message subjects
- Only colorize output when logging to a TTY
- Add check to detect hard tabs in commit messages
- Fix crashing --list-templates flag
- Strip out blank release note in addition to warning the committer
- Add Python linting via flake8
- Add CoffeeScript linting via coffeelint
- Improve spec coverage
- Use installed
jshint
if available instead of Rhino - Update readme with dependencies, uninstall instructions
- Fix SKIP_CHECKS for namespaced hooks
- Make hooks work when repo-specific configuration file is missing
- Improve error handling when loading custom hooks
- Add un-skippable checks (not skipped via SKIP_CHECKS)
- Improve spec coverage
- Add uninstall (-u) option
- Make installer more robust
- Improve readme documentation
- Add template listing (-l) to CLI
- Add rspec and super-basic spec coverage
- Improve command-line messaging
- First public release