summaryrefslogtreecommitdiffstats
path: root/scripts/install-git-hooks.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/install-git-hooks.sh')
-rwxr-xr-xscripts/install-git-hooks.sh18
1 files changed, 18 insertions, 0 deletions
diff --git a/scripts/install-git-hooks.sh b/scripts/install-git-hooks.sh
new file mode 100755
index 000000000..1a4113f8d
--- /dev/null
+++ b/scripts/install-git-hooks.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+set -e
+
+SCRIPTS_DIR=$(realpath $(dirname "$0"))
+HOOK_DIR=$(realpath "$SCRIPTS_DIR/../.git/hooks")
+HOOK_NAMES="applypatch-msg pre-applypatch post-applypatch pre-commit prepare-commit-msg commit-msg post-commit pre-rebase post-checkout post-merge pre-receive update post-receive post-update pre-auto-gc"
+
+for hook in $HOOK_NAMES; do
+ # If the hook already exists, is executable, and is not a symlink
+ if [ ! -h $HOOK_DIR/$hook -a -x $HOOK_DIR/$hook ]; then
+ mv $HOOK_DIR/$hook $HOOK_DIR/$hook.local
+ fi
+ # create the symlink, overwriting the file if it exists
+ # probably the only way this would happen is if you're using an old version of git
+ # -- back when the sample hooks were not executable, instead of being named ____.sample
+ ln -s -f ../../scripts/hooks-wrapper.sh $HOOK_DIR/$hook
+done