src/cm/media/js/lib/flexible-js-formatting/.git/hooks/update
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
#!/bin/sh
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
# An example hook script to blocks unannotated tags from entering.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
# Called by git-receive-pack with arguments: refname sha1-old sha1-new
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
# To enable this hook, make this file executable by "chmod +x update".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
# Config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
# ------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
# hooks.allowunannotated
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
#   This boolean sets whether unannotated tags will be allowed into the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
#   repository.  By default they won't be.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
# hooks.allowdeletetag
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
#   This boolean sets whether deleting tags will be allowed in the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
#   repository.  By default they won't be.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
# hooks.allowdeletebranch
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
#   This boolean sets whether deleting branches will be allowed in the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
#   repository.  By default they won't be.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
# --- Command line
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
refname="$1"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
oldrev="$2"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
newrev="$3"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
# --- Safety check
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
if [ -z "$GIT_DIR" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
	echo "Don't run this script from the command line." >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
	echo " (if you want, you could supply GIT_DIR then run" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
	echo "  $0 <ref> <oldrev> <newrev>)" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
	exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
	echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
	exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
# --- Config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
allowunannotated=$(git config --bool hooks.allowunannotated)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
allowdeletetag=$(git config --bool hooks.allowdeletetag)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
# check for no description
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
if [ -z "$projectdesc" -o "$projectdesc" = "Unnamed repository; edit this file to name it for gitweb." ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
	echo "*** Project description file hasn't been set" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
	exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
# --- Check types
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
# if $newrev is 0000...0000, it's a commit to delete a ref.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
if [ "$newrev" = "0000000000000000000000000000000000000000" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
	newrev_type=delete
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
else
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
	newrev_type=$(git-cat-file -t $newrev)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
case "$refname","$newrev_type" in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
	refs/tags/*,commit)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
		# un-annotated tag
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
		short_refname=${refname##refs/tags/}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
		if [ "$allowunannotated" != "true" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
			exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
		fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
	refs/tags/*,delete)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
		# delete tag
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
		if [ "$allowdeletetag" != "true" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
			echo "*** Deleting a tag is not allowed in this repository" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
			exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
		fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
	refs/tags/*,tag)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
		# annotated tag
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
	refs/heads/*,commit)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
		# branch
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
	refs/heads/*,delete)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
		# delete branch
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
		if [ "$allowdeletebranch" != "true" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
			echo "*** Deleting a branch is not allowed in this repository" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
			exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
		fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
	refs/remotes/*,commit)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
		# tracking branch
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
	refs/remotes/*,delete)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
		# delete tracking branch
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
		if [ "$allowdeletebranch" != "true" ]; then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
			echo "*** Deleting a tracking branch is not allowed in this repository" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
			exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
		fi
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
	*)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
		# Anything else (is there anything else?)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
		exit 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
		;;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
esac
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
# --- Finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
exit 0