Overcommit v0.24.0 Release Notes

  • ๐Ÿ†• New Features

    • Add required_library/required_libraries hook option which specifies a list of paths a hook should load with Kernel.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, and post-rewrite hooks that warn when submodules are uninitialized, out of date with the current index, or contain merge conflicts

    ๐Ÿ”„ Changes

    • 0๏ธโƒฃ 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 default ALL configuration, and user-defined hook configuration over default ALL configuration
    • ๐Ÿ”„ Change hook summary message to mention warnings if there were any
    • 0๏ธโƒฃ 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 from overcommit 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 of scss-lint 0.36.0)
    • โšก๏ธ Update childprocess dependency to minimum 0.5.6
    • Change default value for problem_on_unmodified_line from warn to report
    • โšก๏ธ 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 the Rubocop pre-commit hook

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fix LocalPathsInGemfile to not report lints for commented paths
    • ๐Ÿ›  Fix CssLint pre-commit hook to ignore blank lines in csslint 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