#! /bin/sh usage() { echo "usage: $0 [ -nr ] tag [ [tag] file | dir ]" echo "available tags are:" svn ls $tag exit 1 } get_url() { var=$1 revarg=$2 if [ x$revarg = x ]; then usage fi case $revarg in trunk) target=trunk ;; [0-9]*) target=tags/fli4l-`echo $revarg | sed -e 's/\./_/g'` ;; *) usage ;; esac eval $var=`echo $url | sed -e "s,^\(.*\)\(trunk\|branches\|tags\).*,\1$target,"` } do_diff() { if [ "$remove_rev" ]; then svn diff $wrapper $1 $2 $pipe | \ sed -e '/^[+-][+-][+-]/s/(revision [0-9]*)//' else svn diff $wrapper $1 $2 $pipe fi if [ $? -ne 0 ]; then res=$? echo 1>&2 echo " svn diff $wrapper $1 $2" 1>&2 fi } if [ ! -d .svn ] then echo "no .svn directory found" exit 1 fi res=0 wrapper="--diff-cmd `dirname $0`/diff-wrapper" while [ "$1" ]; do case "$1" in -nw) wrapper= ;; -nr) remove_rev=yes ;; *) break ;; esac shift done url=`svn info | sed -n -e 's/^URL://p'` get_url url_left $1 shift case $1 in [0-9]* | trunk) get_url url_right $1 shift ;; *) url_right=$url ;; esac case $url_left in */trunk) tmp=$url_right url_right=$url_left url_left=$tmp esac if [ "$1" ] then while [ "$1" ]; do do_diff $url_left/$1 $url_right/$1 shift done else do_diff $url_left $url_right svn diff $wrapper $tag $url fi exit $res