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}