#!/usr/bin/env bash
# Copyright (c) 2012 Felipe Contreras

alias=$1
url=$2

dir="$GIT_DIR/testgit/$alias"
prefix="refs/testgit/$alias"

default_refspec="refs/heads/*:${prefix}/heads/*"

refspec="${GIT_REMOTE_TESTGIT_REFSPEC-$default_refspec}"

test -z "$refspec" && prefix="refs"

export GIT_DIR="$url/.git"

mkdir -p "$dir"

if test -z "$GIT_REMOTE_TESTGIT_NO_MARKS"
then
	gitmarks="$dir/git.marks"
	testgitmarks="$dir/testgit.marks"
	test -e "$gitmarks" || >"$gitmarks"
	test -e "$testgitmarks" || >"$testgitmarks"
	testgitmarks_args=( "--"{import,export}"-marks=$testgitmarks" )
fi

while read line
do
	case $line in
	capabilities)
		echo 'import'
		echo 'export'
		test -n "$refspec" && echo "refspec $refspec"
		if test -n "$gitmarks"
		then
			echo "*import-marks $gitmarks"
			echo "*export-marks $gitmarks"
		fi
		echo
		;;
	list)
		git for-each-ref --format='? %(refname)' 'refs/heads/'
		head=$(git symbolic-ref HEAD)
		echo "@$head HEAD"
		echo
		;;
	import*)
		# read all import lines
		while true
		do
			ref="${line#* }"
			refs="$refs $ref"
			read line
			test "${line%% *}" != "import" && break
		done

		if test -n "$gitmarks"
		then
			echo "feature import-marks=$gitmarks"
			echo "feature export-marks=$gitmarks"
		fi
		echo "feature done"
		git fast-export "${testgitmarks_args[@]}" $refs |
		sed -e "s#refs/heads/#${prefix}/heads/#g"
		echo "done"
		;;
	export)
		before=$(git for-each-ref --format='%(refname) %(objectname)')

		git fast-import "${testgitmarks_args[@]}" --quiet

		after=$(git for-each-ref --format='%(refname) %(objectname)')

		# figure out which refs were updated
		join -e 0 -o '0 1.2 2.2' -a 2 <(echo "$before") <(echo "$after") |
		while read ref a b
		do
			test $a == $b && continue
			echo "ok $ref"
		done

		echo
		;;
	'')
		exit
		;;
	esac
done
