#!/bin/bash thresdate="2006-02-20 21:16:10 +0000" thres=`date -d "$thresdate" +%s` IFS=: FILESEP="=============================================================================" ENTRYSEP="----------------------------" mkdir -p logs diffs cvs -d:pserver:address@hidden:/sources/tinycc log | while read a b ; do case "$a" in "Working file") wf="$b" ;; "$ENTRYSEP") while [ "$a" = "$ENTRYSEP" ] ; do IFS=" " read a rev read a date=`echo "$a" | sed 's|.*date: \([^;]*\);.*|\1|'` author=`echo "$a" | sed 's|.*author: \([^;]*\);.*|\1|'` commitid=`echo "$a" | sed -n 's|.*commitid: \([^;]*\);.*|\1|p'` udate=`date -d "$date" +%s` fname="logs/$date;$author;$commitid" if [ -n "$commitid" ] && [ -f "logs/"*";$commitid.files" ] ; then oname=`ls "logs/"*";$commitid.files"` oname=${oname%%.files} odate=${oname%%;*} odate=${odate#logs/} odate=`date -d "$odate" +%s` if [ $odate -ge $udate ] ; then fname="$oname" else mv "$oname.desc" "$fname.desc" mv "$oname.files" "$fname.files" fi fi writedesc= if [ $udate -gt $thres ] ; then echo "$rev $wf" >> "$fname.files" if [ ! -f "$fname.desc" ] ; then writedesc=yes fi fi while read a ; do case "$a" in "$ENTRYSEP" | "$FILESEP") break ;; *) [ -z "$writedesc" ] || echo "$a" >> "$fname.desc" ;; esac done done ;; esac done prevdate="$thresdate" IFS=" " for i in logs/*.files ; do basename "$i" .files | ( IFS=";" read a b c if [ -z "$c" ] ; then exec > "diffs/$a $b.patch" else exec > "diffs/$a $b ($c).patch" fi echo Author: "$b" echo Date: "$a" [ -z "$c" ] || echo CommitID: "$c" echo echo Log: cat "${i%%.files}.desc" echo echo Affected: IFS=" " while read x b ; do echo " $b" done < "$i" echo cvs -d:pserver:address@hidden:/sources/tinycc diff -D "$prevdate" -D "$a" -u -d -N -p ) prevdate="${i%%;*}" prevdate="${prevdate##logs/}" done