diff options
Diffstat (limited to 'Master/Tools/p4changelog')
-rwxr-xr-x | Master/Tools/p4changelog | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Master/Tools/p4changelog b/Master/Tools/p4changelog new file mode 100755 index 00000000000..96f1c2b29a0 --- /dev/null +++ b/Master/Tools/p4changelog @@ -0,0 +1,89 @@ +#!/bin/sh +# $Id: //depot/Master/Tools/p4changelog#7 $ $Date: 2005/05/29 $ $Author: karl $ +# Public domain. Originally written 2004, Karl Berry. +# Get change info from p4 describe and p4 changes. + +umask 0 + +debug=${OVERRIDE_DEBUG-false} + +mydir=`dirname $0` # Master/Tools +outdir=`cd $mydir/../../Build/cdbuild/logs && pwd` +outfile=$outdir/log + +line=`grep '^Change' $outfile | head -1` +lastlogged=`echo "$line" | awk '{print $2}'` +echo "$lastlogged" | egrep '^[0-9]+$' >/dev/null \ +|| { echo "$0: no change number in Change line of $outfile: $line"; + exit 1; } +nextneeded=`expr $lastlogged + 1` +lastchange=`p4 changes -m 1 -s submitted | awk '{print $2}'` + +echo "lastlogged=$lastlogged, nextneeded=$nextneeded, lastchange=$lastchange" + +# nothing submitted since last change? +test $lastchange -lt $nextneeded && exit 0 + +rotate=false +for c in `seq $lastchange -1 $nextneeded`; do + echo " getting change $c" + # rotate if crossed a 500-change mark. + echo $c | grep '[05]00$' >/dev/null && rotate=true + + p4 describe -ds $c 2>&1 \ + | sed -e 's,^\.\.\. //depot/, ,' -e '/^Differences/,$d' \ + | awk '/^Affected files/ { printf "%s", $0; next } {print}' \ + >>$outfile.temp +done + +# we'll update $outfile. +echo "p4 edit $outfile..." +$debug || p4 edit $outfile + +if $rotate; then + echo "rotating $lastlogged..." + mv $outfile $outfile.$lastlogged + gzip $outfile.$lastlogged + chmod 444 $outfile.$lastlogged.gz + ls -l $outfile.$lastlogged.gz + $debug || p4 add $outfile.$lastlogged.gz + cp /dev/null $outfile +fi + +# prepend new changes to current log, put into p4. +cat $outfile.temp $outfile >$outfile.temp2 + +if $debug; then + for f in $outfile $outfile.temp $outfile.temp2; do + echo + (cd `dirname $f` && ls -l `basename $f`) + head -1 $f + grep '^Change' $f | tail -1 + done + + exit 0 +fi + +mv $outfile.temp2 $outfile +echo "p4 submit..." +p4 change -o \ +| sed "s!<enter description here>!regenerated by $0!" \ +| p4 submit -i + +cat $outfile.temp # show it to me +rm -f $outfile.temp + +exit 0 + +# this was how we grabbed all the old entries to get things started. +for c in `seq 5150 -1 1`; do + expr $c % 500 >/dev/null \ + || { outfile=$outdir/out.$c; cp /dev/null $outfile; } + + # minimal diff, remove even that (hunk counts) with sed, + # remove newline from "Affected files" line. + p4 describe -ds $c 2>&1 \ + | sed -e 's,^\.\.\. //depot/, ,' -e '/^Differences/,$d' \ + | awk '/^Affected files/ { printf "%s", $0; next } {print}' \ + >>$outfile +done |