#!/bin/sh -ex

#
# inheritable mergeinfo failure
#
# This is reduced from some real-world use on an enormous repository.
# 

#### common variables
WORK=$(mktemp -d)
REPO=$WORK/repo
WC=$WORK/wc
MWC=$WORK/mwc
RURI=file:////$REPO

#### cleanup helper
trap "echo rm -rf $WORK" EXIT

#### set up generic repository
svnadmin create $REPO
svn -q mkdir -m 'init trunk' $RURI/trunk
svn -q mkdir -m 'init branches' $RURI/branches

#### set up some content

# directories
svn -q mkdir -m 'init content' $RURI/trunk/tests

# create trunk/tests/{a,b,c,d}
mkdir $WC; cd $WC
   svn -q co $RURI/trunk/tests
   cd tests
   for f in a b c d; do
       date +%s.%N > $f
       svn add $f
       svn commit -m 'create file' $f
   done
cd ..; rm -rf $WC
CHNO=$(svnlook youngest $REPO)

# branch it
svn copy -m 'working branch' $RURI/trunk $RURI/branches/troublemaker1

# get some non-inheritable mergeinfo on the branch

# change /a
mkdir $WC; cd $WC
   svn -q co $RURI/trunk/tests
   cd tests
   date +%s.%N > a
   svn commit -m 'update for later merge' a
cd ..; rm -rf $WC
CHNO=$(svnlook youngest $REPO)

# merge it
mkdir $WC; cd $WC
   svn -q co --depth=empty $RURI/branches/troublemaker1/tests
   cd tests
   svn -q update --depth=files a
   svn merge -c $CHNO $RURI/trunk/tests
   svn diff
   svn proplist -vR .
   svn commit -m 'stuff mergeinfo'
cd ..; rm -rf $WC

# create file trunk/tests/TestFoo.py
mkdir $WC; cd $WC
   svn -q co $RURI/trunk/tests
   cd tests
   date +%s.%N > TestFoo.py
   svn add TestFoo.py
   svn commit -m 'create file' TestFoo.py
cd ..; rm -rf $WC
CHNO=$(svnlook youngest $REPO)

# set up the merge

mkdir $WC; cd $WC
   svn -q co $RURI/branches/troublemaker1/tests
   cd tests
   svn merge -c $CHNO $RURI/trunk/tests
   svn diff
   svn proplist -vR .
cd ..; rm -rf $WC

# # diags
# svn proplist -vR $RURI/trunk
# svn pg -R svn:mergeinfo $RURI
# svn log -v -g $RURI/branches/troublemaker1/product/thing/code.py



