diff --git a/test/mkdevbranch b/test/mkdevbranch new file mode 100755 index 000000000..67ef4ad29 --- /dev/null +++ b/test/mkdevbranch @@ -0,0 +1,93 @@ +#!/bin/bash + +version=0.21 +program=${0##*/} +progdir=${0%/*} +if [ "$progdir" = "$program" ]; then progdir="."; fi + +function die() { + echo -e "\n$program: Error: ${1:0:160} ..." >&2 + exit 1 +} + +function warn() { + logger -i -p user.warn -t $program "$*" + echo "$program: Warning: $*" 1>&2; +} + +function note() { + logger -i -p user.notice -t $program "$*" + if [ -n "$OPT_VERBOSE" ]; then echo -e "$*"; fi +} + +function version() { + echo -e "$program: v$version\n\nRunning as $(id -urn) on $(date +'%Y-%m-%d %H:%M')" +} + +#[ "$#" -gt 0 ] || die "Expected the ietf number as argument on the command line, but found nothing" +#[ $1 -gt 70 ] || die "Expected the ietf number as argument on the command line, but found '$1'" + +#if [ "$1" ]; then arg=$1; else arg=$(svn info http://svn.tools.ietf.org/svn/tools/ietfdb/trunk/ | egrep "^Last Changed Rev" | awk '{print $4}'); fi +if [ "$1" ]; then arg=$1; else arg=$(svn ls http://svn.tools.ietf.org/svn/tools/ietfdb/tags/ | tail -n 1 | sed -r 's/^(.*)\/$/v\1/' ); fi + +if [ "${arg:0:1}" = "v" ]; then + source="tags/${arg:1}" + target="$arg" + rev="release $arg" +else + source="trunk@$arg" + target="r$arg" + rev="repository rev r$arg" +fi + +function mksvndir() { + who=$1 + if [ "$2" ]; then dir=$2; else dir=$who; fi + if ! svn info http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir >/dev/null 2>&1 ; then + echo "Creating personal directory area for IETF datatracker coding: /personal/$dir" + svn mkdir http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir -m "Personal SVN dir for $who, for IETF datatracker code" + else + echo "Repository area personal/$dir is already in place." + fi +} + +num=$( < /www/tools.ietf.org/meta/current-ietf-number.txt) +trac-admin /www/tools.ietf.org/tools/ietfdb wiki export IETF${num}SprintSignUp \ + | egrep "^\|\|" | tail -n +2 | python -c ' +import sys, re +for line in sys.stdin: + blank, name, email, rest = line.strip().split("||", 3) + login, dummy = re.split("[@.]", email, 1) + print "\t".join((login.strip().lower(), email.strip().lower(), name.strip())) ' \ + | $progdir/update $progdir/sprint$num.txt + +cat $(ls $progdir/sprint*.txt | tail -n 4) | sed 's/[ \t]*$//' | sort | uniq | while read login email name; do + echo "" + echo "$login ($name <$email>):" + mksvndir $login + if ! svn info http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target >/dev/null 2>&1 ; then + echo " creating $target branch for $login ($name)." + svn cp http://svn.tools.ietf.org/svn/tools/ietfdb/$source http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target/ -m "New IETF datatracker coding branch for $name" \ + && mail "$name <$email>" -s "A new SVN branch for you for IETF datatracker coding${rev:+, based on $rev}." -b henrik@levkowetz.com <<-EOF + Hi, + + This mail has been automatically generated by the $program script. + + A new SVN branch has been set up for you for IETF datatracker coding, at + http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target + ${rev:+This branch is based on $rev. }You can check it out by doing + svn co http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target + + (More instructions about setup is available at + http://trac.tools.ietf.org/tools/ietfdb/wiki/SprintCoderSetup) + + + Best, + + Henrik (via the $program script) + + EOF + else + echo " branch personal/$login/$target already exists." + fi +done