#!/usr/bin/env bash # # Call `tidy` before git push # Copy this script to .git/hooks to activate, # and remove it from .git/hooks to deactivate. # set -Euo pipefail # Check if the push is doing anything other than deleting remote branches SKIP=true while read LOCAL_REF LOCAL_SHA REMOTE_REF REMOTE_SHA; do if [[ "$LOCAL_REF" != "(delete)" || \ "$LOCAL_SHA" != "0000000000000000000000000000000000000000" ]]; then SKIP=false fi done if $SKIP; then echo "Skipping tidy check for branch deletion" exit 0 fi ROOT_DIR="$(git rev-parse --show-toplevel)" echo "Running pre-push script $ROOT_DIR/x test tidy" cd "$ROOT_DIR" # The env var is necessary for printing diffs in py (fmt/lint) and cpp. TIDY_PRINT_DIFF=1 ./x test tidy \ --set build.locked-deps=true \ --extra-checks auto:py,auto:cpp,auto:js if [ $? -ne 0 ]; then echo "You may use \`git push --no-verify\` to skip this check." exit 1 fi