diff --git a/.gitattributes b/.gitattributes
index 8027e271f2590997b0e5f57fa016818db2479f55..068ec18e445134463d51a3719429322160e8fd43 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,6 @@
 .git*            export-ignore
 .gitattributes  -export-ignore
+.hooks*          export-ignore
 
 /GitSetup        export-ignore
 /SetupForDevelopment.sh  export-ignore  eol=lf
diff --git a/.hooks-config b/.hooks-config
new file mode 100644
index 0000000000000000000000000000000000000000..739cdd268bbb44015171f0cc54d68c4d1f5e50bd
--- /dev/null
+++ b/.hooks-config
@@ -0,0 +1,2 @@
+[hooks "chain"]
+	pre-commit = GitSetup/pre-commit
diff --git a/GitSetup/pre-commit b/GitSetup/pre-commit
new file mode 100755
index 0000000000000000000000000000000000000000..1f1d3f52959b2c59598ccf19f94245caa9ef6614
--- /dev/null
+++ b/GitSetup/pre-commit
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+egrep-q() {
+  egrep "$@" >/dev/null 2>/dev/null
+}
+
+die() {
+  echo 'pre-commit hook failure' 1>&2
+  echo '-----------------------' 1>&2
+  echo '' 1>&2
+  echo "$@" 1>&2
+  exit 1
+}
+
+#-----------------------------------------------------------------------------
+
+# Check that developmer setup is up-to-date.
+lastSetupForDevelopment=$(git config --get hooks.SetupForDevelopment || echo 0)
+eval $(grep '^SetupForDevelopment_VERSION=' "${BASH_SOURCE%/*}/../SetupForDevelopment.sh")
+test -n "$SetupForDevelopment_VERSION" || SetupForDevelopment_VERSION=0
+if test $lastSetupForDevelopment -lt $SetupForDevelopment_VERSION; then
+  die 'Developer setup in this work tree is out of date.  Please re-run
+
+  ./SetupForDevelopment.sh
+'
+fi
diff --git a/SetupForDevelopment.sh b/SetupForDevelopment.sh
index 81499ad2ae5d2c75973a0ede74004ab6a0e76708..520884ba06b020d96feff46f330140b77f56a32d 100755
--- a/SetupForDevelopment.sh
+++ b/SetupForDevelopment.sh
@@ -10,3 +10,7 @@ GitSetup/tips
 # Rebase master by default
 git config rebase.stat true
 git config branch.master.rebase true
+
+# Record the version of this setup so Scripts/pre-commit can check it.
+SetupForDevelopment_VERSION=1
+git config hooks.SetupForDevelopment ${SetupForDevelopment_VERSION}