#!/bin/sh
#
# git post-merge (and post-checkout) hook, used by propellor's author to
# maintain a joeyconfig branch with some changes while being able to merge
# between it and branches without the changes.
#
# Each time this hook is run, it checks if it's on a branch with
# name ending in "config". If so, config.hs is pointed at $branch.hs
# and privdata/relocate is written to make files in privdata/.$branch/ be
# used.
# 
# Otherwise, config.hs is pointed at config-simple.hs, and
# privdata/relocate is removed.

set -e

commit () {
	if [ -n "$(git status --short privdata/relocate config.hs)" ]; then
		git commit privdata/relocate config.hs -m "$1"
	fi
}

branch="$(git symbolic-ref --short HEAD)"
case "$branch" in
	"")
		true
		;;
	*config)
		ln -sf "$branch".hs config.hs
		git add config.hs
		echo ".$branch" > privdata/relocate
		git add privdata/relocate
		commit "setting up $branch after merge"
		;;
	*)
		ln -sf config-simple.hs config.hs
		git add config.hs
		if [ -e privdata/relocate ]; then
			rm -f privdata/relocate
			git rm --quiet privdata/relocate
		fi
		commit "clean up after merge"
		;;
esac
