#!/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