From 80ebcdd100a82fdc582e62f35042c74ce38ea753 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Fri, 14 Aug 2020 16:30:47 -0400 Subject: [PATCH] maint: Only run `make authenticate` when pushing commits. * etc/git/pre-push: Exit early when deleting a branch. --- etc/git/pre-push | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/etc/git/pre-push b/etc/git/pre-push index 415345fc75..59671b0d58 100755 --- a/etc/git/pre-push +++ b/etc/git/pre-push @@ -20,13 +20,26 @@ # # -# Only use the hook when pushing to Savannah. -case "$2" in - *.gnu.org*) - exec make authenticate check-channel-news - exit 127 - ;; - *) - exit 0 - ;; -esac +# This is the "empty hash" used by Git when pushing a branch deletion. +z40=0000000000000000000000000000000000000000 + +while read local_ref local_hash remote_ref remote_hash +do + # When deleting a remote branch, no commits are pushed to the remote, and + # thus there are no signatures to be verified. + if [ "$local_hash" != $z40 ] + then + # Only use the hook when pushing to Savannah. + case "$2" in + *.gnu.org*) + exec make authenticate check-channel-news + exit 127 + ;; + *) + exit 0 + ;; + esac + fi +done + +exit 0