The update hook interpretes deleting a tag, no matter if annotated or not, through git push <remote> :<tag> as unannotated tag, and declines it by default: $ git push origin :atag deleting 'refs/tags/atag' *** The un-annotated tag, atag, is not allowed in this repository *** Use 'git tag [ -a | -s ]' for tags you want to propagate. ng refs/tags/atag hook declined error: hooks/update exited with error code 1 error: hook declined to update refs/tags/atag error: failed to push to 'monolith:/git/qm/test-repo' With this patch deleting a tag is allowed unconditionally, just as deleting a branch. Signed-off-by: Gerrit Pape <pape@xxxxxxxxxxx> --- templates/hooks--update | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/templates/hooks--update b/templates/hooks--update index 65e8c32..a109b1b 100644 --- a/templates/hooks--update +++ b/templates/hooks--update @@ -43,7 +43,7 @@ fi # --- Check types # if $newrev is 0000...0000, it's a commit to delete a branch if [ "$newrev" = "0000000000000000000000000000000000000000" ]; then - newrev_type=commit + newrev_type=delete else newrev_type=$(git-cat-file -t $newrev) fi @@ -58,13 +58,16 @@ case "$refname","$newrev_type" in exit 1 fi ;; + refs/tags/*,delete) + # delete tag + ;; refs/tags/*,tag) # annotated tag ;; - refs/heads/*,commit) + refs/heads/*,commit | refs/heads/*,delete) # branch ;; - refs/remotes/*,commit) + refs/remotes/*,commit | refs/remotes/*,delete) # tracking branch ;; *) -- 1.5.3.5 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html