--- a
+++ b/git/update
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# --- Command line
+refname="$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 "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+    echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
+    exit 1
+fi
+
+# Don't allow merge commits on master
+if [ "$refname" = "refs/heads/master" ]
+then
+    for rev in $(git rev-list $newrev --not $oldrev)
+    do
+        echo -n "Checking: $rev"
+        if git rev-parse --verify --quiet $rev^2 > /dev/null
+        then
+            echo " (merge!)"
+            echo
+            echo "Merges not allowed on master. Rebase your changes instead."
+            echo
+            exit 1
+        else
+            echo " (ok)"
+        fi
+    done
+fi
+