#!/bin/sh

ref="$1"
oldrev="$2"
newrev="$3"

# --- Safety check

if [ -z "$GIT_DIR" ]; then
        echo "Don't run this script from the command line." >&2
        echo " (if you want, you could supply GIT_DIR then run" >&2
        echo "  $0 <ref> <oldrev> <newrev>)" >&2
        exit 1
fi

if [ -z "$ref" -o -z "$oldrev" -o -z "$newrev" ]; then
        echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
        exit 1
fi

# --- Disallow pushing to the branches for pockets

pocket_to_git() {
    local pocket git
    pocket="$1"
    git="$(invirt-getconf "git.pockets.$pocket.git" 2>/dev/null)"
    if [ $? != 0 ]; then
	git="$pocket"
    fi
    echo "$git"
}

for pocket in $(invirt-getconf -l git.pockets); do
    if [ "$ref" = "refs/heads/$(pocket_to_git "$pocket")" ]; then
	echo "*** Pushing to a pocket branch in this repository is not allowed" >&2
	exit 1
    fi
done

# --- Disallow pushing tags

case "$ref" in
    refs/heads/*)
	;;
    *)
        echo "*** Pushing non-branches to this repository is not allowed" >&2
        exit 1
        ;;
esac