diff options
author | Karl Berry <karl@freefriends.org> | 2008-06-09 20:12:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-06-09 20:12:47 +0000 |
commit | c2ded34c4ac6a32fbed94b870481aaf9667fc227 (patch) | |
tree | cc7b9d209a306f44bc962ea8d7357307b9460ca9 /Master/tlpkg/bin/svnchangelog | |
parent | 07b1dd24a6c6ca7ac335c56b3cc3127bd7910619 (diff) |
move autoupdate scripts to new tools bindir
git-svn-id: svn://tug.org/texlive/trunk@8623 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/bin/svnchangelog')
-rwxr-xr-x | Master/tlpkg/bin/svnchangelog | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Master/tlpkg/bin/svnchangelog b/Master/tlpkg/bin/svnchangelog new file mode 100755 index 00000000000..930751fe629 --- /dev/null +++ b/Master/tlpkg/bin/svnchangelog @@ -0,0 +1,97 @@ +#!/bin/sh +# $Id$ +# Public domain. Originally written 2004, Karl Berry. +# Get change info from svn log. (see now-deleted p4changelog for the +# previous code using p4.) + +umask 0 + +debug=true +chicken=${OVERRIDE_CHICKEN-false} + +# to get started, ran svn log and put the first thousand changes in log. + +mydir=`dirname $0` # Build/tools +outdir=`cd $mydir/../logs && pwd` +outfile=$outdir/svnlog +test ! -f $outfile && exit 2 # error probably given by the cd + +# get the revision number we last logged +line=`grep '^r[0-9]' $outfile | head -1 | sed 's/^r//'` +lastlogged=`echo "$line" | awk '{print $1}'` +echo "$lastlogged" | egrep '^[0-9]+$' >/dev/null \ +|| { echo "$0: no change number in r line of $outfile: $line"; + exit 1; } + +nextneeded=`expr $lastlogged + 1` +$debug && echo "lastlogged=$lastlogged, nextneeded=$nextneeded" +if test -z "$nextneeded"; then + echo "$0: empty nextneeded?!" + exit 1 +fi + +# get the log info since then. +tlroot=`cd $mydir/../.. && pwd` +newlogs=$outdir/newlogdata +svn log -v -r HEAD:$nextneeded $tlroot >$newlogs || exit 1 +# with HEAD:next we get the entries newest first, as we want them. +$debug && ls -l $newlogs + +line=`grep '^r[0-9]* |' $newlogs | head -1 | sed 's/^r//'` +latestchange=`echo "$line" | awk '{print $1}'` +$debug && echo "latestchange=$latestchange" +if test -z "$latestchange"; then + echo "$0: empty latestchange?!" + exit 1 +fi + +# done if nothing submitted since last change. +# or if only one commit has been made, because we ourselves do a commit, +# so otherwise we'd add a useless entry every time we're run. +test $latestchange -le $nextneeded && exit 0 + +# rotate logs if crossed a 1000-change mark. +rotate=false +for c in `seq $latestchange -1 $nextneeded`; do + echo $c | grep '001$' >/dev/null && rotate=true +done +$debug && echo "rotate=$rotate" + +if ! $chicken && $rotate; then + mv -v $outfile $outfile.$lastlogged + gzip -v $outfile.$lastlogged + chmod 444 $outfile.$lastlogged.gz + ls -l $outfile.$lastlogged.gz + svn add $outfile.$lastlogged.gz + cp /dev/null $outfile +fi + +# prepend new changes to current log, and put log messages first. +$mydir/svnchangelog.sed $newlogs >$outfile.new +cat $outfile >>$outfile.new + +if $debug; then # really debug + # show first and last change number in each file. + for f in $newlogs $outfile $outfile.new; do + echo + (cd `dirname $f` && ls -l `basename $f`) + grep '^r[0-9]* |' $f | head -1 + grep '^r[0-9]* |' $f | tail -1 + done +fi + + +if ! $chicken; then + mv $outfile.new $outfile + echo "svn commit..." + svn commit -m"regenerated by $0" $outdir +fi + +$mydir/svnchangelog.sed $newlogs # show it to me +rm -f $newlogs $outfile.new + +exit 0 + +# to get things started: +svn log -v -r 1000:1 /home/texlive/trunk/ >svnlog +svn add svnlog |