#!/bin/bash

set -e 
$PREPARE_CLEAN > /dev/null
$INCLUDE_FUNCS
cd $WC

logfile=$LOGDIR/003.change_types

if [[ $UID -eq 0 ]]
then
	ONLY_ROOT=
else
	ONLY_ROOT=ignore_func
	function ignore_func()
	{
	  true
	}
fi

if test -d typechange
then
  rm -r typechange
fi

mkdir typechange
 pushd typechange > /dev/null

 for i in file device symlink dir
 do
	 echo file > file-$i
	 $ONLY_ROOT cp -a /dev/zero device-$i
	 ln -s file-$i symlink-$i
	 mkdir dir-$i
	 echo sub > dir-$i/sub-entry
	 mkdir dir-$i/sub
	 touch dir-$i/sub/sub-entry
 done
popd > /dev/null


$BINq ci -m "inserted types" -o delay=yes > $logfile
rev=`grep "revision	" $logfile | tail -1 | cut -f2 -d"	" | cut -f1 -d" "` 
$INFO "initial checkin is r$rev"

# now goto other wc and update
pushd $WC2 > /dev/null
$BINq up

$BINdflt st > $logfile

$COMPARE_1_2
popd > /dev/null

rm -r typechange/*
pushd typechange > /dev/null

 for i in file device symlink dir
 do
	 echo file > $i-file
	 $ONLY_ROOT cp -a /dev/zero $i-device
	 ln -s $i-1 $i-symlink
	 mkdir $i-dir
	 echo sub > $i-dir/sub-entry
	 mkdir $i-dir/sub
	 touch $i-dir/sub/sub-entry
 done
popd > /dev/null

$BINq ci -m "changed types" -o delay=yes > $logfile
if [[ `$BINdflt st -C -C | wc -l` -ne 0 ]]
then
	$BINdflt st -C -C
	$ERROR "Entries left out of commit"
fi
$INFO "typechange done, running update"

$BINdflt up $WC2 > $logfile
$INFO "update done"

$WC2_UP_ST_COMPARE
$SUCCESS "all types changed to other types."
exit

export FSVS_WARNING="mixed-rev-wc=ignore"

# Now we change WC1 back via update, and revert everything in WC2.
$BINq up -r$rev $WC2
$BINq revert -r$rev -R -R .

$COMPARE_1_2
$SUCCESS "Revert works across type-changes too."
