#!/bin/sh
# Backport the last change in HEAD, to a branch.
# Usage: svnbackport <files>
# WARNING: the branch tag is hardcoded into the script, make sure to check it!
#
# This is a port of the "cvsbackport" script:
# Initial author: Dirk Mueller
# Support for multiple command-line arguments: David Faure
# Ported to SVN: Till Gerken
# Help message: Thomas Zander
#
# It is a straight port and not very sophisticated. It might break. I hope
# that someone else with more knowledge about Subversion will pick it up.
# It needs to be used from within the repository so that it can guess
# the remote URL correctly.
#

#REPOSITORY=https://svn.kde.org/home/kde

if test -z "$1" -o "$1" = "-h" -o "$1" = "--help"; then
    echo "Usage: svnbackport recentlyCommittedFile";
    exit;
fi

BRANCH=3.5

SRC_REMOTE=`svn info | grep URL: | cut -c6-`
TARGET_REMOTE=`echo $SRC_REMOTE | sed "s|trunk/KDE|branches/KDE/$BRANCH|"`


echo "Backporting to $BRANCH"
TMPFILE=`mktemp svnbackport.XXXXXX` || exit 1
files=$*
until test $# -eq 0; do

  echo "looking for last change to $1..."
  svnlastchange $1 > $TMPFILE
  echo "browsing last change to $1..."
  less $TMPFILE

  FILE_PATH=$1
  FROM_URL=$SRC_REMOTE/$1
  TO_URL=$TARGET_REMOTE/$1

  echo "switching to branch..."
  svn switch $TO_URL $FILE_PATH
  patch $FILE_PATH $TMPFILE
  rm -f $TMPFILE
  echo "showing diff for $1..."
  svn diff $FILE_PATH | less

  shift
done

kdialog --yesno "Do you want to commit all changes?"
if [ $? = 0 ]; then
  svn ci $files
fi

echo "switching back to trunk..."
for file in $files
do
  svn switch $SRC_REMOTE/$file $file
done
