#!/bin/bash
# changes username in local svn repository

if [ -f .svn/entries ]; then # are we in an svn dir?
    if [ -n "$1" ]; then # username arg given?
	echo $1 | grep -q @
	contains_at=$?
	echo $1 | grep -q /
	contains_slash=$?
	if [ contains_at -o contains_slash ]; then # @s and /s break
						   # reversibility
	    echo "username must not contain @ or / signs"
	    exit 1
	fi
	olduser=`cat .svn/entries | grep '^svn+ssh://.*@' | cut -d / -f3 | cut -d @ -f1 | head -1`
	oldurl=`cat .svn/entries | grep '^svn+ssh://.*@' | head -1`
	newurl=`echo $oldurl | sed "s/^svn+ssh:\/\/$olduser@/svn+ssh:\/\/$1@/"`

	echo "Changing local svn user from $olduser to $1"
	svn switch --relocate $oldurl $newurl && echo done && exit 0
    else
	echo "usage: $0 <NEWUSER>"
	exit 1
    fi
else
    echo "$PWD doesn't seem to be an svn directory"
    exit 1
fi

