1#!/bin/sh 2# 3# An example hook script to blocks unannotated tags from entering. 4# Called by git-receive-pack with arguments: refname sha1-old sha1-new 5# 6# To enable this hook, make this file executable by "chmod +x update". 7# 8# Config 9# ------ 10# hooks.allowunannotated 11# This boolean sets whether unannotated tags will be allowed into the 12# repository. By default they won't be. 13# 14 15# --- Command line 16refname="$1" 17oldrev="$2" 18newrev="$3" 19 20# --- Safety check 21if[-z"$GIT_DIR"];then 22echo"Don't run this script from the command line.">&2 23echo" (if you want, you could supply GIT_DIR then run">&2 24echo"$0<ref> <oldrev> <newrev>)">&2 25exit1 26fi 27 28if[-z"$refname"-o -z"$oldrev"-o -z"$newrev"];then 29echo"Usage:$0<ref> <oldrev> <newrev>">&2 30exit1 31fi 32 33# --- Config 34allowunannotated=$(git-repo-config --bool hooks.allowunannotated) 35 36# check for no description 37if[-z"$projectdesc"-o"$projectdesc"="Unnamed repository; edit this file to name it for gitweb"];then 38echo"*** Project description file hasn't been set">&2 39exit1 40fi 41 42# --- Check types 43newrev_type=$(git-cat-file -t $newrev) 44 45case"$refname","$newrev_type"in 46 refs/tags/*,commit) 47# un-annotated tag 48 short_refname=${refname##refs/tags/} 49if["$allowunannotated"!="true"];then 50echo"*** The un-annotated tag,$short_refname, is not allowed in this repository">&2 51echo"*** Use 'git tag [ -a | -s ]' for tags you want to propagate.">&2 52exit1 53fi 54;; 55 refs/tags/*,tag) 56# annotated tag 57;; 58 refs/heads/*,commit) 59# branch 60;; 61 refs/remotes/*,commit) 62# tracking branch 63;; 64*) 65# Anything else (is there anything else?) 66echo"*** Update hook: unknown type of update to ref$refnameof type$newrev_type">&2 67exit1 68;; 69esac 70 71# --- Finished 72exit0