--- /dev/null
+#!/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" ] || [ -z "$oldrev" ] || [ -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 build.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