Skip to content

webestit/githooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT License Latest Stable Version Total Downloads GitHub issues GitHub forks GitHub stars

🪝 Repository-Managed Git Hooks

This package allows you to manage Git hooks centrally within your repository. It's language-agnostic and only requires Git and a POSIX-compliant shell (like sh, bash, dash, or zsh).

🚀 Installation

  1. Add post-install/update scripts to your composer.json
    (so the package automatically configures git hooks):

    {
        "scripts": {
            "post-install-cmd": [
               "@composer exec githooks install"
            ],
            "post-update-cmd": [
               "@composer exec githooks install"
            ]
        }
    }
  2. Install the package:

    composer require webestit/githooks

The package will automatically:

  1. Configure core.hooksPath to point to its own hooks directory.
  2. Create a .githooks directory in your project root with subdirectories for common hooks.

ℹ️ How it works

  • The package sets Git's core.hooksPath to its directory which contains all Git hooks.
  • Every Git hook executes all executable scripts found in your project's .githooks/<hook-name>/ directory.
  • Scripts are executed in alphabetical order (e.g., 01-check.sh, 02-test.sh).

➕ Adding hooks to your project

  1. Go to the .githooks/<hook-name>/ directory in your project root.
  2. Add your shell script:
    # Example: .githooks/pre-commit/01-lint.sh
    #!/bin/sh
    echo "Running linter..."
    # your logic here
  3. Make it executable:
    chmod +x .githooks/pre-commit/01-lint.sh

💡 Examples

You can find example hooks in the package's examples directory. Feel free to copy and adapt them to your project's .githooks/ folder.

⚠️ Bypassing hooks temporarily

You can bypass hooks using --no-verify:

git commit --no-verify

⚠️ Disabling repository hooks

To stop using these managed hooks and return to Git defaults:

git config --unset core.hooksPath

About

Repository-Managed Git Hooks

Resources

License

Stars

Watchers

Forks

Languages