A fully configurable and extendable Git hook manager for enforcing code quality and project policies.
Overcommit is a Git hook manager that allows developers to configure and run automated checks (like linters, syntax validators, and custom scripts) at various stages of the Git workflow. It solves the problem of inconsistent or manual code quality enforcement by providing a centralized, version-controlled hook system.
Development teams using Git who want to automate code quality checks, enforce commit policies, and maintain consistent standards across repositories.
Developers choose Overcommit for its extensive built-in hooks, easy customization, and security features like signature verification, making it a robust alternative to manual Git hook management.
A fully configurable and extendable Git hook manager
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes built-in hooks for many languages and tools like RuboCop, ESLint, and ShellCheck, reducing the need to write custom checks from scratch, as listed in the PreCommit and other hook categories.
Hook configurations are stored in .overcommit.yml within the repository, ensuring team consistency and easy tracking of changes, with support for repo-specific and local overrides.
Runs hooks in parallel by default, leveraging multiple cores to minimize time impact, and allows concurrency tuning via the global concurrency option.
Features signature verification to alert users when hook code changes, helping prevent execution of malicious scripts, though it can be disabled if needed.
Requires Ruby 2.6+ and gem installations, which can be a hurdle in environments not already using Ruby or where system permissions restrict gem installs without tools like rbenv.
Setting up involves managing .overcommit.yml, handling third-party tool dependencies for hooks, and understanding numerous hook options, which can be daunting for quick adoption.
Pre-commit hooks cannot modify files or add them to the index due to stashing behavior, restricting automated fixes like code formatting during commits, as noted in the WARNING section.