summaryrefslogtreecommitdiffstats
path: root/util/git-hooks/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'util/git-hooks/install.sh')
-rwxr-xr-xutil/git-hooks/install.sh19
1 files changed, 19 insertions, 0 deletions
diff --git a/util/git-hooks/install.sh b/util/git-hooks/install.sh
new file mode 100755
index 0000000..e216af4
--- /dev/null
+++ b/util/git-hooks/install.sh
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+root=$(git rev-parse --show-cdup 2>/dev/null) || \
+ { echo "Not under git control. Cannot install git hooks." >&2 ; exit 0 ; }
+
+dst="${root}"$(git rev-parse --git-path hooks/)
+src=util/git-hooks/ # relative to root
+hooks=$(cd "${root}${src}" && git ls-files -c | grep -Ev 'install.sh|wrapper.sh')
+
+for h in $hooks; do
+ # Test if hook is not already installed, i.e. doesn't point at the wrapper
+ if [ ! "${dst}$h" -ef "${root}${src}wrapper.sh" ]; then
+ # preserve custom hooks if any
+ if [ -e "${dst}$h" ]; then
+ mv "${dst}$h" "${dst}$h.local"
+ fi
+ ln -s "../../${src}wrapper.sh" "${dst}$h"
+ fi
+done
OpenPOWER on IntegriCloud