#-----------------------------
# directory names
#-----------------------------

CWD        := $(shell pwd)
REPOS_DIR  := $(CWD)/repos
REPOS_PATH := file://$(REPOS_DIR)
SRC_PATH   := ./src
TMP_PATH   := ./tmp

all :
	#-----------------------------
	# first create a new clean repository
	#-----------------------------
	rm -rf $(REPOS_DIR)
	svnadmin create $(REPOS_DIR)
	#-----------------------------
	# create a project with some files
	#-----------------------------
	rm   -rf $(SRC_PATH)
	mkdir -p $(SRC_PATH){,/proj}
	touch $(SRC_PATH)/proj/{prog_c1.cpp,prog_c2.cpp,prog_c3.cpp,Makefile}
	svn mkdir  -m "create proj folders" $(REPOS_PATH)/{proj,proj/{trunk,tags,branches}}
	svn import -m "import-proj" $(SRC_PATH)/proj $(REPOS_PATH)/proj/trunk
	rm -rf $(SRC_PATH)
	#-----------------------------
	# make a branch from the project
	#-----------------------------
	rm -rf $(TMP_PATH)
	svn co --non-recursive    $(REPOS_PATH)               $(TMP_PATH)
	svn co --non-recursive    $(REPOS_PATH)/proj          $(TMP_PATH)/proj
	svn co --non-recursive    $(REPOS_PATH)/proj/branches $(TMP_PATH)/proj/branches
	svn co --ignore-externals $(REPOS_PATH)/proj/trunk    $(TMP_PATH)/proj/trunk
	svn cp $(TMP_PATH)/proj/trunk    $(TMP_PATH)/proj/branches/br01
	svn ci -m "made a branch"  	 $(TMP_PATH)/proj/branches
	rm -rf $(TMP_PATH)
	#-----------------------------
	# make a second branch from the first one
	#-----------------------------
	rm -rf $(TMP_PATH)
	svn co --non-recursive    $(REPOS_PATH)               $(TMP_PATH)
	svn co --non-recursive    $(REPOS_PATH)/proj          $(TMP_PATH)/proj
	svn co --non-recursive    $(REPOS_PATH)/proj/branches $(TMP_PATH)/proj/branches
	svn co --ignore-externals $(REPOS_PATH)/proj/branches/br01 $(TMP_PATH)/proj/branches/br01
	svn cp $(TMP_PATH)/proj/branches/br01    $(TMP_PATH)/proj/branches/br02
	svn ci -m "copied a branch"  	 $(TMP_PATH)/proj/branches
	rm -rf $(TMP_PATH)
	#-----------------------------
	# try to rename the branch
	#-----------------------------
	rm -rf $(TMP_PATH)
	svn co --non-recursive    $(REPOS_PATH)               $(TMP_PATH)
	svn co --non-recursive    $(REPOS_PATH)/proj          $(TMP_PATH)/proj
	svn co --non-recursive    $(REPOS_PATH)/proj/branches $(TMP_PATH)/proj/branches
	svn co --ignore-externals $(REPOS_PATH)/proj/branches/br01 $(TMP_PATH)/proj/branches/br01
	# !!! THIS IS THE ONE THAT FAILES !!!
	svn mv $(TMP_PATH)/proj/branches/br01 $(TMP_PATH)/proj/branches/br03
	svn ci -m "renamed a branch"  	 $(TMP_PATH)/proj/branches
	rm -rf $(TMP_PATH)
	# show final result
	svn log -v $(REPOS_PATH)
