hooks: make sure hooks directory exists before writing hooks
[girocco.git] / toolbox / update-all-hooks.sh
blob173b177d17711ddf8c18caf7fc9d8799e3f2b07d
1 #!/bin/sh
3 # Update all out-of-date hooks in all current projects and install missing ones
5 set -e
7 . @basedir@/shlib.sh
9 base="$cfg_reporoot"
10 hookbin="$cfg_basedir/hooks"
11 cut -d : -f 1 < "$cfg_chroot/etc/group" | grep -v _repo | \
13 while read proj; do
14 projdir="$base/$proj.git"
15 updates=
16 for hook in pre-receive post-receive update post-update; do
17 if [ -f "$projdir/hooks/$hook" ]; then
18 if ! cmp -s "$hookbin/$hook" "$projdir/hooks/$hook"; then
19 cat "$hookbin/$hook" > "$projdir/hooks/$hook"
20 updates="$updates $hook"
22 elif [ ! -e "$projdir/hooks/$hook" ]; then
23 [ -d "$projdir/hooks" ] || mkdir "$projdir/hooks"
24 cat "$hookbin/$hook" > "$projdir/hooks/$hook"
25 chmod 0775 "$projdir/hooks/$hook"
26 updates="$updates +$hook"
28 done
29 [ -z "$updates" ] || echo "$proj:$updates"
30 done