#!/bin/sh

# $Id: svn-x-mv 8425 2005-08-10 02:23:49Z quarl $

# svn-x-mv: do an 'svn mv' for a file that was already moved.
#

# e.g.:
#   mv file1 file2         [oops! should have done svn mv file1 file2]
#   svn-x-mv file1 file2   [fix]
#
# see also svn-fixup-rename, which uses this script.

## quarl 2005-08-08 initial version

die() {
    echo "$@" >&2
    exit 1
}

if [ $# != 2 ]; then
    die "syntax: $0 moved-from moved-to"
fi

file1=$1
file2=$2

test -e "$file2" -o -L "$file2" || die "$0: can't find '$file2'"
test -f "$file2" -o -L "$file2" || die "$0: target must be a file (or symlink)"

if [ -e $file1 ]; then
    echo "$0: warning: $file1 still exists"
else
    # "svn revert"
    #file1base=`dirname "$file1"`/.svn/text-base/`basename "$file1"`.svn-base
    #cp "$file1base" "$file1" || die "$0: couldn't get original $file1"
    svn revert "$file1"
fi

mv "$file2" "$file2.tmp" || die "$0: couldn't mv $file2 $file2.tmp"
svn mv "$file1" "$file2" || die "$0: couldn't svn mv $file1 $file2 - target left as $file2.tmp"
chmod +w "$file2"
mv "$file2.tmp" "$file2" || die "$0: couldn't mv $file2.tmp $file2"

echo
echo "Success!"

