Skip to main content

Hooks

Hooks in Git are custom scripts that are automatically executed at certain key events in the Git lifecycle, such as before a commit or after a successful commit. These hooks allow developers to customize and automate specific actions in their Git workflow.

One of the most important and common hooks is the pre-commit hook. This runs automatically before committing your changes to Git. Here are some reasons why it is good to use a pre-commit hook:

  1. Code Standards Compliance Check: You can use this hook to verify that your code complies with the coding standards and conventions defined for your project or language, such as PSR in PHP or PEP in Python. This helps to keep the code clean and readable.
  2. Security Analysis: You can incorporate security analysis tools into your pre-commit hook, such as Gitleaks, to look for potential leaks of sensitive information in your code before it is confirmed. This helps prevent accidental inclusion of passwords or other sensitive data in your repository.
  3. Maintain Code Quality: The pre-commit hook allows you to perform static code analysis, style checks and run unit tests before committing your changes. This ensures that your code meets quality standards and performs as expected.
  4. Save Time and Avoid Problems: By automating these checks before commit, you can avoid future problems and save time in detecting and correcting bugs or security issues at later stages of development.

To enable a pre-commit hook, you must create an executable script that performs the desired checks. Then, this script is placed in the folder .git/hooks/ of your repository with the name pre-commit. Make sure that the script returns a non-zero (0) exit code if the checks are successful and a non-zero code if problems are encountered.

In summary, the use of pre-commit hooks is a recommended practice to ensure code quality, follow good development practices and maintain security in your project. They automate important tasks and help maintain an efficient and trouble-free development workflow.