fleet/git-hooks
Victor Lyuboslavsky 46719c9fb2
Auto-generate and check Android schema.sql (#26720)
For #26218 

This is an infrastructure change. No functional feature changes.
2025-02-28 16:30:40 -06:00
..
backend Auto-generate and check Android schema.sql (#26720) 2025-02-28 16:30:40 -06:00
README.md Optional git hooks (#14074) 2023-10-31 09:59:47 -06:00

Git Hooks

This document aims to guide you through the benefits and utilities of implementing Git Hooks in your development workflow

Introduction

Git hooks are scripts that Git executes before or after events such as commit or push. This document discusses the benefits of using a push hook for Fleet Developers.

Benefits

Reduced Waiting Time

Imagine pushing a commit and then realizing that there was a minor issue (ie. make lint-go), forcing you to restart the entire CI process, including tests that can take up to ~30 minutes to complete

Streamlined Workflow

Reduce the feedback loop and aid rapid development

Saving CI Resources

By reducing the number of failed builds, you free up CI resources for other tasks

Getting Started

  1. Copy the pre-push to your fleet repo hooks directory

    cp ./git-hooks/backend/setup/pre-push ./.git/hooks/
    chmod +x ./.git/hooks/pre-push
    
  2. Edit the pre-push file and specify the scripts you want to run. Filenames must match scripts in the ./git-hooks/backend/hooks/ directory. This also specifies the order they run.

    declare -a USED_HOOKS=(
    "compile-go"
    "db-schema"
    "lint-go"
    )
    

Contributing

All related code is located in the ./git-hooks directory

Scripts in the hooks/ directory need to exit a non-zero code in order to fail properly. These scripts do not need to be executable because we are calling it from the pre-push script as bash $SCRIPT_NAME

Make sure you promote your changes in Slack!

Contributing Ideas

  • Update/Add a script to the hooks directory
  • Build out ./git-hooks/frontend/
  • ??????