#!/bin/bash

cleanup() {
	if [ -n "$TMPFILE" ] ; then
		rm -f "$TMPFILE"
	fi
	if [ -n "$TMPFILE2" ] ; then
		rm -f "$TMPFILE2"
	fi
}

trap cleanup EXIT SIGQUIT SIGKILL SIGTERM

TMPFILE=`mktemp /tmp/svncommitselected.XXXXXX`
svn status "$@" | grep '^\(M\|A\|D\|R\)' >$TMPFILE

if [ $? -ne 0 ] ; then
	exit 1
fi

if [ ! -s "$TMPFILE" ] ; then
	echo "Nothing to commit ?"
	exit 0
fi

TMPFILE2=`mktemp /tmp/svncommitselected.XXXXXX`
cat >$TMPFILE2 <<EOF
# Delete all filenames that you don't want to be committed and save this file.
# Exit the editor without saving to abort.

EOF

sort $TMPFILE >>$TMPFILE2
OLDTIME=`ls -l --time-style=+%s $TMPFILE2 | awk '{ print $6; }'`

if [ -z "$EDITOR" ] ; then
	EDITOR=vi
fi

$EDITOR $TMPFILE2

NEWTIME=`ls -l --time-style=+%s $TMPFILE2 | awk '{ print $6; }'`
if [ "$OLDTIME" = "$NEWTIME" ] ; then
	echo "Exited without saving, aborting."
	exit 0
fi

OLDIFS="$IFS"
IFS=`echo -en "\n\t"`
n=0
awk '/^[[:alnum:]]/ { print gensub ("^[[:alnum:]]+[[:space:]]*(_[[:space:]]*)?(+[[:space:]]*)?[[:space:]]*(.*)", "\\3", "g", $0); }' $TMPFILE2 >$TMPFILE
while read FILE ; do
	FILES[$n]="$FILE"
	let n++
done <$TMPFILE

IFS="$OLDIFS"
svn commit "${FILES[@]}"


