A platform-independent Git hooks manager supporting per-repo and shared hooks with version control, auto-updates, and containerized execution.
Githooks is a Git hooks manager written in Go that enables per-repository and shared Git hooks with robust version control and automatic updates. It provides a structured way to manage hooks, supports parallel execution, and can run hooks in containers for consistent environments.
Developers and teams managing Git repositories who need consistent, version-controlled hooks across multiple projects, especially those requiring reproducible environments and shared hook libraries.
Developers choose Githooks for its containerized execution to eliminate environment inconsistencies, support for shared hook repositories with auto-updates, and parallel execution for performance. It focuses solely on running hooks efficiently without managing language toolchains.
🦎 Githooks: per-repo and shared Git hooks with version control and auto update. [✩Star] if you're using it!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Runs hooks in Docker or Podman containers to eliminate environment inconsistencies, with automatic image pull/build integration via .images.yaml files for reproducible execution.
Supports shared hook repositories from Git URLs with automatic updates on post-merge events, enabling centralized hook management across projects without manual sync.
Executes hooks in parallel using a configurable threadpool, speeding up runs on multi-core systems with options like .all-parallel files and batch folders.
Automatically integrates Git LFS hooks when git-lfs is installed and enforces requirements with .lfs-required files, simplifying large file workflow management.
Prompts for user trust on new or changed hooks with configurable settings (e.g., skip-untrusted-hooks), adding a security layer to prevent unauthorized script execution.
Requires Docker or Podman for containerized hooks, and managing permissions (e.g., with Docker) often needs additional tools like MatchHostFsOwner, increasing setup overhead.
The fsmonitor-watchman hook is not supported, limiting use for certain Git workflows, and the README admits this gap without a clear timeline for addition.
Does not automatically prune old container images built for hooks, requiring manual cleanup, and shared hook updates can fail if repositories are unavailable without proper configuration.
Complex setup with YAML configurations, container images, and trust prompts can be overwhelming for users accustomed to simple script-based hooks, despite detailed documentation.