From 6236cb7feb15e954f7f65ae98e6fd98b323a4adb Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Sun, 19 Apr 2026 15:52:25 -0400 Subject: [PATCH] ci(pre-push): skip gate for delete-only pushes Git passes refs on stdin; deletes have local-sha = 40 zeros. Running the full parity gate just to delete an already-merged branch wastes ~90s per cleanup. Guard short-circuits when every ref being pushed is a delete. --- .husky/pre-push | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.husky/pre-push b/.husky/pre-push index 4024c22d..4dee9050 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -5,6 +5,18 @@ set -euo pipefail # Feature branches use a faster gate and let GitHub CI run the full suite. # Override in emergencies only: CCS_SKIP_PREPUSH_GATE=1 git push --no-verify +# Skip gate entirely for delete-only pushes. Git passes refs on stdin as +# " "; deletes have local-sha = 40 zeros. +# Running a full test suite just to delete a merged branch is pure waste. +STDIN_CONTENT="$(cat || true)" +if [[ -n "$STDIN_CONTENT" ]]; then + NON_DELETE_COUNT="$(printf '%s\n' "$STDIN_CONTENT" | awk 'NF >= 2 && $2 !~ /^0{40}$/' | wc -l | tr -d ' ')" + if [[ "$NON_DELETE_COUNT" == "0" ]]; then + echo "[i] Delete-only push, skipping pre-push gate." + exit 0 + fi +fi + CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" BASE_BRANCH="${CCS_PR_BASE:-}"