#!/bin/sh -e

#
# Remove older CVS* tags in the given kernel tree
#

#-----------------------------------------------#
CVSROOT=${CVSROOT:-/var/cvs}

MODULE=linux
NTAGS=100

while [ $# != 0 ]
do
    case $1 in
        -m) MODULE=$2; shift 2;;
	-d) CVSROOT=$2; shift 2;;
	-t) NTAGS=$2; shift 2;;
	*) echo "Usage: $0 [-m module] [-d CVSROOT] [-t #tags]" >&2
	   exit 2;;
    esac
done

#-----------------------------------------------#
CVS() {
    cvs -Qfz4 -d$CVSROOT "$@"
}

# print the tag list associated with cvs file $1
show_tags() {
    CVS rlog $1 |
    awk '
	(/symbolic names:$/) {
	    state = 1
	    next
	}
	(state == 1 && !(/^[ 	]/)) {
	    state = 2
	}
	(state == 1) {
	    sub(":", "", $1)
	    print $1
	}'
}

info() {
    echo "info: $@" >&2
}

fixpath()
{
    # need to adjust $PATH to contain directory of this script, in which
    # other thins area assumed to live as well
    SCRIPTDIR=$(dirname $0)
    case X$SCRIPTDIR in
	X/) : ;;
	X.) SCRIPTDIR=$PWD ;;
	X.*) SCRIPTDIR=$PWD/$SCRIPTDIR ;;
    esac
    PATH=$SCRIPTDIR:$PATH
}

cleanup() {
    rm -fr $TMPDIR
}

info "\$Id: untag-kernel-tree,v 1.2 2004/11/12 19:06:01 bame Exp $"

TMPDIR=/tmp/$(basename $0)-$$-$RANDOM

START=$PWD
fixpath

mkdir -p $TMPDIR

show_tags $MODULE/Makefile |
    version-order | 
    sort |
    awk '($2 ~ "^CVS.*_PA[0-9]*[0-9]$") {print $2}' >$TMPDIR/taglist

set -- $(<$TMPDIR/taglist)
while [ $# -gt $NTAGS ]
do
    info removing tag $1 $MODULE
    CVS rtag -d $1 $MODULE
    shift 1
done
 
cleanup
