From 169381bbce998807c119f291d69b8ae1d8fb5785 Mon Sep 17 00:00:00 2001 From: scott Chacon Date: Wed, 7 Nov 2007 17:19:09 -0800 Subject: added some testing files and got some real tests to run --- tests/files/working.git/hooks/update | 78 ++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 tests/files/working.git/hooks/update (limited to 'tests/files/working.git/hooks/update') diff --git a/tests/files/working.git/hooks/update b/tests/files/working.git/hooks/update new file mode 100644 index 0000000..d8c7626 --- /dev/null +++ b/tests/files/working.git/hooks/update @@ -0,0 +1,78 @@ +#!/bin/sh +# +# An example hook script to blocks unannotated tags from entering. +# Called by git-receive-pack with arguments: refname sha1-old sha1-new +# +# To enable this hook, make this file executable by "chmod +x update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git-repo-config --bool hooks.allowunannotated) + +# check for no description +projectdesc=$(sed -e '1p' "$GIT_DIR/description") +if [ -z "$projectdesc" -o "$projectdesc" = "Unnamed repository; edit this file to name it for gitweb" ]; then + echo "*** Project description file hasn't been set" >&2 + exit 1 +fi + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a branch +if [ "$newrev" = "0000000000000000000000000000000000000000" ]; then + newrev_type=commit +else + newrev_type=$(git-cat-file -t $newrev) +fi + +case "$refname","$newrev_type" in + refs/tags/*,commit) + # un-annotated tag + short_refname=${refname##refs/tags/} + if [ "$allowunannotated" != "true" ]; then + echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + ;; + refs/heads/*,commit) + # branch + ;; + refs/remotes/*,commit) + # tracking branch + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 -- cgit