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