#!/bin/bash cur=$(svn info | awk '/^Revision:/ { print $2 }') # List recent commits, extract revision numbers, stop at release, and grab the last revision # - get svn log, looking backwards from HEAD # - stop on 'Set version info ...' # - filter out revision lines # - grab the first field # - grab the last line # - remove the leading 'r' rev=$(svn log $PWD -r ${2:-HEAD}:${1:-$((cur-100))} \ | sed -r -n -e '1,/^Set version info( and settings)?( back)? to (development|release)/p' \ | egrep '^r[0-9]+ \|' \ | cut -d ' ' -f 1 \ | tail -n 1 \ | sed 's/^r//') # Grab commit log lines from just after the start rev, going forwards, and reformat # - Get svn log entries, starting with the earliest # - Filter out dividing lines and revision/committer/date lines, keeping the messages # - Insert leading asterisks: ' * ' at the front of the first line in each text block # - Unwrap lines that start with unindented text # - Do line folding at column 76 # - Indent any unindented lines 4 spaces # - Add blank lines in front of log entries svn log $PWD -r $((rev+2)):${2:-HEAD} \ | sed -r 's/^(----------|r[0-9]+).*$/\n/' \ | sed '1,/./s/^/ * /;/^$/,/./s/^/ * /;/^ \* $/d' \ | sed -e :a -e '$!N;s/\n([A-Za-z0-9])/ \\1/;ta' -e 'P;D' \ | fold -sw76 \ | sed -r 's/^([^ ].*)$/ &/' \ | sed -r 's/^ \* /\n * /' echo "" TZ=UTC date +" -- Robert Sparks %d %b %Y %H:%M:%S %z"