3 # Update all out-of-date hooks in all current projects and install missing ones
12 hookbin
="$cfg_basedir/hooks"
13 cut
-d : -f 1 < "$cfg_chroot/etc/group" |
grep -v ^_repo | \
16 projdir
="$base/$proj.git"
18 for hook
in pre-receive post-receive update post-update
; do
19 if [ -f "$projdir/hooks/$hook" ]; then
20 if ! cmp -s "$hookbin/$hook" "$projdir/hooks/$hook"; then
21 cat "$hookbin/$hook" > "$projdir/hooks/$hook"
22 updates
="$updates $hook"
24 elif [ ! -e "$projdir/hooks/$hook" ]; then
25 [ -d "$projdir/hooks" ] || mkdir
"$projdir/hooks"
26 cat "$hookbin/$hook" > "$projdir/hooks/$hook"
27 chmod 0775 "$projdir/hooks/$hook"
28 updates
="$updates +$hook"
31 if [ -d "$projdir/mob/hooks" ]; then
32 if ! [ -x "$projdir/mob/hooks/update" ]; then
33 ln -sfn ..
/..
/hooks
/update
"$projdir/mob/hooks/update"
34 updates
="$updates +mob/update"
36 # note that mob/hooks does not get a post-receive hook
37 for hook
in pre-receive post-update
; do
38 if ! [ -x "$projdir/mob/hooks/$hook" ]; then
39 mh
="$projdir/mob/hooks/$hook"
40 echo '#!/bin/sh' > "$mh.$$"
41 echo "cd .. && GIT_DIR=. exec hooks/$hook" >> "$mh.$$"
45 updates
="$updates +mob/$hook"
49 [ -z "$updates" ] ||
echo "$proj:$updates"