Skip to content

Releases: sds/overcommit

Overcommit 0.26.0

11 Jun 03:24
@sds sds
Compare
Choose a tag to compare

Includes a pretty crucial fix for a bug where renaming a file as part of a commit amendment would cause pre-commit hooks to crash. Other cool feature to look out for is the new env hook option, which allows you to configure the environment variables you'd like to run your hook with (useful for command line applications that are configurable only via environment variables).

New Features

  • Add EmptyMessage commit-msg hook that reports commits messages that are
    empty or contain only whitespace
  • Add env hook configuration option that allows you to set values for
    environment variables during the course of a particular hook's run

Bug Fixes

  • Fix handling of paths with spaces in the name
  • Fix CaseConflicts pre-commit hook to not fail on initial commit
  • Fix handling of files removed or renamed in a commit amendment

Overcommit 0.25.0

02 May 23:42
@sds sds
Compare
Choose a tag to compare

A relatively small release with a few new hooks and some bug fixes.

One major breaking change to note that will likely affect a large number of users is the renaming of the Rubocop hook to RuboCop, matching the capitalization of the project itself in order to reduce confusion.

New Features

  • Add Vint pre-commit hook that checks Vim script with
    Vint
  • Add Scalariform pre-commit hook that checks formatting of Scala code with
    Scalariform
  • Add SlimLint pre-commit hook that analyzes Slim templates with
    Slim-Lint

Changes

  • Include SVG files in ImageOptim, XmlLint, and XmlSyntax pre-commit
    hooks by default
  • Make IndexTags hooks quiet by default
  • Rename Rubocop pre-commit hook to RuboCop to match the project's proper
    name

Bug Fixes

  • Fix HardTabs and TrailingWhitespace pre-commit hooks to include
    line information in errors, making it work as expected when
    problem_on_unmodified_line is set to something other than report
  • Fix handling of changing a symlink to a directory on commit amendment so it
    is not included in the list of modified files for pre-commit hooks
  • Handle empty commit messages in CapitalizedSubject, SingleLineSubject,
    HardTabs, TextWidth, and TrailingPeriod commit-msg hooks

Overcommit 0.24.0

13 Apr 07:12
@sds sds
Compare
Choose a tag to compare

This marks a major milestone for Overcommit. A host of new types of hooks are now possible and of course new hooks to go with them. A special thanks to @jawshooah for the tremendous amount of work he has put into this release.

A major change from the previous version is that almost all hooks are now opt-in by default. Since Overcommit is starting to get used on a wide variety of projects, having to manually disable all the hooks you don't want to run for every new project was becoming a nuisance, and so it made sense to switch to having to opt-in to (almost) all hooks. This should make the tool more generally useful and easier to get started with.

However, this means developers who are upgrading will have to manually copy the default configuration from 0.23.0 (or whichever version they were running previously) in order to have Overcommit behave the same way as it was previously. It may be worthwhile to manually go through all the hooks yourself rather than copying over, however.

Another major change is the order in which ALL hook configurations are applied. Previously, a hook's configuration was determined by applying the default and repo-specific configuration in the following order:

config/default.yml[ALL] → .overcommit.yml[ALL] → config/default.yml[hook] → .overcommit.yml[hook]

This was a bit unintuitive, as a hook-specific config in the default configuration could override the repo-specific ALL hook configuration. This has been changed so configuration is applied in the following order:

config/default.yml[ALL] → config/default.yml[hook] → .overcommit.yml[ALL] → .overcommit.yml[hook]

See #117 for the full discussion.

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

  • 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
  • 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