1219820Sjeff#!/bin/sh
2219820Sjeff
3219820Sjeffusage()
4219820Sjeff{
5219820Sjeff	echo "Usage: $0 [--spec] <target>"
6219820Sjeff	exit 2
7219820Sjeff}
8219820Sjeff
9219820Sjefftest -z "$1" && usage
10219820Sjeff
11219820Sjeffif [ "$1" = "--spec" ] ; then
12219820Sjeff	spec_format=1
13219820Sjeff	shift
14219820Sjeff	test -z "$1" && usage
15219820Sjefffi
16219820Sjeff
17219820SjeffTARGET=$1
18219820Sjeff
19219820SjeffGIT_DIR=`git rev-parse --git-dir 2>/dev/null`
20219820Sjeff
21219820Sjefftest -z "$GIT_DIR" && usage
22219820Sjeff
23219820Sjeff
24219820Sjeffexport GIT_DIR
25219820Sjeffexport GIT_PAGER=""
26219820Sjeffexport PAGER=""
27219820Sjeff
28219820Sjeff
29219820Sjeffmkchlog()
30219820Sjeff{
31219820Sjeff	target=$1
32219820Sjeff	format=$2
33219820Sjeff
34219820Sjeff	prev_tag=""
35219820Sjeff
36219820Sjeff	for tag in `git tag -l ${target}-'*'` ; do
37219820Sjeff		obj=`git cat-file tag $tag | awk '/^object /{print $2}'`
38219820Sjeff		base=`git merge-base $obj HEAD`
39219820Sjeff		if [ -z "$base" -o "$base" != $obj ] ; then
40219820Sjeff			continue
41219820Sjeff		fi
42219820Sjeff		all_vers="$prev_tag$tag $all_vers"
43219820Sjeff		prev_tag=$tag..
44219820Sjeff	done
45219820Sjeff
46219820Sjeff	if [ -z "$prev_tag" ] ; then
47219820Sjeff		all_vers=HEAD
48219820Sjeff	else
49219820Sjeff		all_vers="${prev_tag}HEAD $all_vers"
50219820Sjeff	fi
51219820Sjeff
52219820Sjeff	for ver in $all_vers ; do
53219820Sjeff		log_out=`git log $ver -- $target`
54219820Sjeff		if [ -z "$log_out" ] ; then
55219820Sjeff			continue
56219820Sjeff		fi
57219820Sjeff		ver_name=`echo $ver | sed -e 's/^.*\.\.//'`
58219820Sjeff		echo ""
59219820Sjeff		echo "** Version: $ver_name"
60219820Sjeff		echo ""
61219820Sjeff		git log --no-merges "${format}" $ver -- $target
62219820Sjeff		prev_t=$tag..
63219820Sjeff	done
64219820Sjeff}
65219820Sjeff
66219820Sjeff
67219820Sjeffif [ -z "$spec_format" ] ; then
68219820Sjeff	mkchlog $TARGET --pretty=format:"%ad %an%n%H%n%n* %s%n" \
69219820Sjeff		| sed -e 's/^\* /\t* /'
70219820Sjeffelse
71219820Sjeff	echo "%changelog"
72219820Sjeff	mkchlog $TARGET --pretty=format:"- %ad %an: %s"
73219820Sjeff	echo ""
74219820Sjefffi
75