Revision 6c2f207b2316149ee8dfaf026e4a869ff9ab42f7 authored by Shawn O. Pearce on 05 November 2006, 05:37:23 UTC, committed by Junio C Hamano on 05 November 2006, 07:48:36 UTC
At least one older version of the Solaris C compiler doesn't support
the newer C99 style struct initializers.  To allow Git to compile
on those systems use an archive description struct which is easier
to initialize without the C99 struct initializer syntax.

Also since the archives array is not used by anyone other than
archive.c we can make it static.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent af8ffbe
Raw File
hooks--update
#!/bin/sh
#
# An example hook script to mail out commit update information.
# It also blocks tags that aren't annotated.
# Called by git-receive-pack with arguments: refname sha1-old sha1-new
#
# To enable this hook:
# (1) change the recipient e-mail address
# (2) make this file executable by "chmod +x update".
#

project=$(cat $GIT_DIR/description)
recipients="commit-list@somewhere.com commit-list@somewhereelse.com"

ref_type=$(git cat-file -t "$3")

# Only allow annotated tags in a shared repo
# Remove this code to treat dumb tags the same as everything else
case "$1","$ref_type" in
refs/tags/*,commit)
	echo "*** Un-annotated tags are not allowed in this repo" >&2
	echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate."
	exit 1;;
refs/tags/*,tag)
	echo "### Pushing version '${1##refs/tags/}' to the masses" >&2
	# recipients="release-announce@somwehere.com announce@somewhereelse.com"
	;;
esac

# set this  to 'cat' to get a very detailed listing.
# short only kicks in when an annotated tag is added
short='git shortlog'

# see 'date --help' for info on how to write this
# The default is a human-readable iso8601-like format with minute
# precision ('2006-01-25 15:58 +0100' for example)
date_format="%F %R %z"

(if expr "$2" : '0*$' >/dev/null
then
	# new ref
	case "$1" in
	refs/tags/*)
		# a pushed and annotated tag (usually) means a new version
		tag="${1##refs/tags/}"
		if [ "$ref_type" = tag ]; then
			eval $(git cat-file tag $3 | \
				sed -n '4s/tagger \([^>]*>\)[^0-9]*\([0-9]*\).*/tagger="\1" ts="\2"/p')
			date=$(date --date="1970-01-01 00:00:00 $ts seconds" +"$date_format")
			echo "Tag '$tag' created by $tagger at $date"
			git cat-file tag $3 | sed -n '5,$p'
			echo
		fi
		prev=$(git describe "$3^" | sed 's/-g.*//')
		# the first tag in a repo will yield no $prev
		if [ -z "$prev" ]; then
			echo "Changes since the dawn of time:"
			git rev-list --pretty $3 | $short
		else
			echo "Changes since $prev:"
			git rev-list --pretty $prev..$3 | $short
			echo ---
			git diff --stat $prev..$3
			echo ---
		fi
		;;

	refs/heads/*)
		branch="${1##refs/heads/}"
		echo "New branch '$branch' available with the following commits:"
		git-rev-list --pretty "$3" $(git-rev-parse --not --all)
		;;
	esac
else
	base=$(git-merge-base "$2" "$3")
	case "$base" in
	"$2")
		git diff --stat "$3" "^$base"
		echo
		echo "New commits:"
		;;
	*)
		echo "Rebased ref, commits from common ancestor:"
		;;
	esac
	git-rev-list --pretty "$3" "^$base"
fi) |
mail -s "$project: Changes to '${1##refs/heads/}'" $recipients
exit 0
back to top