#!/bin/sh
set -e

# utf-8 ctype needed
LANG=en_US.UTF-8
LC_CTYPE=$LANG
export LANG
export LC_CTYPE

repo=$1
if [ $repo = "debconf-team" ] ; then
    perms="0660"
else
    perms="all"
fi

if [ "$2" = "-r" ]; then
	lastok=$(egrep '^Exporting revision.*done' $repo.log|tail -n 1 | awk '{print $3}')
	if [ -n "$lastok" ]; then
		next=$(expr $lastok + 1)
		inc="--resume-from $next"
		tee="-a"
		echo "resuming from revision $next"
	else
		echo "resume failure"
	fi
fi

# delete existing repositories if not resuming
if [ ! "$inc" ]; then
	rm -rf $repo
fi

# create git repositories
for p in $(grep 'create repository ' $repo.rules | sed 's/create repository //'); do 
	if [ ! -d $repo/$p ]; then
		mkdir  -p $repo/$p
		cd $repo/$p
		git init --bare --shared=$perms
		cd ../..
	fi
done

# create authors file
./fetch-authors $repo

# import SVN
(
	cd $repo
	svn-all-fast-export \
		--identity-map ../authors-$repo.txt $inc --rules ../$repo.conf /svn/$repo
) 2>&1 | tee $tee $repo.log

# change group
chgrp -R $repo $repo

crashes=$(ls -1 $repo/fast_import_crash_* 2>/dev/null || true)
if [ -n "$crashes" ]; then
	echo "* Crashes detected: $crashes" >&2
	exit 1
fi
if grep -B2 -i failed $repo.log; then
	echo "* Failure detected, check $repo.log" >&2
	exit 1
fi
