#!/bin/bash

ROOT=`pwd`;
REPOS=file://${ROOT}/repos;
WC=${ROOT}/wc;

#mergeinit () {
#    local SRC=$1;
#    svnmerge.py init ${REPOS}/${SRC};
#    svn commit -F svnmerge-commit-message.txt;
#}

#merge () {
#    local SRC=$1;
#    svnmerge.py merge -S ${REPOS}/${SRC}
#    svn commit -F svnmerge-commit-message.txt
#}

mergeinit () {
    local SRC=$1;
    true;
}

merge () {
    local SRC=$1;
    svn merge ${REPOS}/${SRC}
    svn commit -m "merging changes from ${SRC}"
}

#create empty repos
svnadmin create repos;

#check out wc
svn co $REPOS $WC;

#create ttb
cd $WC;
svn mkdir trunk tags branches;
svn commit -m "init trunk tags branches";

#initial trunk files
cd ${WC}/trunk;
touch message.txt;
mkdir foo;
touch foo/foo-msg.txt;
touch foo/baz-msg.txt;
svn add message.txt foo;
svn commit -m "adding initial files"

#create branches
svn cp ${REPOS}/trunk ${REPOS}/branches/2007-Q4 -m "creating 2007-Q4 branch"
svn cp ${REPOS}/trunk ${REPOS}/branches/2007-Q2-bugfix -m "creating 2007-Q2-bugfix branch"

#init merge tracking on branch
cd ${WC}/branches
svn up;
cd 2007-Q4
mergeinit branches/2007-Q4

#init merge tracking on trunk
cd ${WC}/trunk
svn up
mergeinit branches/2007-Q4

#branch changes
cd ${WC}
svn up
cd ${WC}/branches/2007-Q4
touch foo/bar-msg.txt
svn add foo/bar-msg.txt
echo "b1" >> foo/foo-msg.txt
echo "b2" >> message.txt
svn commit -m "some mods on the branch"

#merge first round of branch changes
cd ${WC}/trunk
svn up
merge branches/2007-Q4

#more branch changes
cd ${WC}/branches/2007-Q4
svn up
echo "b2" >> message.txt
svn commit -m "branch change 2"
echo "b3" >> foo/foo-msg.txt
svn commit -m "branch change 3"
echo "b4" >> foo/bar-msg.txt
svn commit -m "branch change 4"

#merge again
cd ${WC}/trunk
svn up
merge branches/2007-Q4

#make a change on the trunk
echo "t1" >> foo/bar-msg.txt
svn commit -m "trunk change 1"

#yet more branch changes
cd ${WC}/branches/2007-Q4
svn up
echo "b5" >> foo/foo-msg.txt
svn commit -m "branch change 5"
echo "b6" >> foo/foo-msg.txt
svn commit -m "branch change 6"

#merge yet again
cd ${WC}/trunk
svn up
merge branches/2007-Q4
exit

#bugfix branch changes
cd ${WC}/branches/2007-Q2-bugfix
svn up
echo "bfb1" >> foo/baz-msg.txt
svn commit -m "bugfix branch change 1"

#merge bugfix branch to main branch
cd ${WC}/branches/2007-Q4
svn up
merge branches/2007-Q2-bugfix

#merge merged branch to trunk
cd ${WC}/trunk
svn up
merge branches/2007-Q4
