summaryrefslogtreecommitdiffstats
path: root/util/git-hooks/install.sh
blob: d557c2f8a24b0e6f3c24a9e5e0b12e00f610ebdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/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 "$(git rev-parse --prefix $(git rev-parse --git-path hooks/) --show-cdup)${src}wrapper.sh" \
		      "${dst}$h"
	fi
done