diff --git a/hooks/install-hooks.sh b/hooks/install-hooks.sh index 096cedb4eb..69b314d4a6 100755 --- a/hooks/install-hooks.sh +++ b/hooks/install-hooks.sh @@ -2,28 +2,29 @@ # # Install all the client hooks -BASE_DIR=$(dirname $0) +BASE_DIR="$(cd $(dirname $0); pwd -P)" 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" -HOOK_DIR=$(git rev-parse --show-toplevel)/.git/hooks +HOOK_DIR="$(git rev-parse --show-toplevel)/.git/hooks" for hook in $HOOK_NAMES; do - shipped_hook=$BASE_DIR/$hook - installed_hook=$HOOK_DIR/$hook + shipped_hook="$BASE_DIR/$hook" + installed_hook="$HOOK_DIR/$hook" # If we don't distribute it, continue - if [ ! -f $shipped_hook ]; then + if [ ! -f "$shipped_hook" ]; then continue fi - # If the hook already exists, continue - if [ -e $installed_hook -o -h $installed_hook ]; then + if [ -h "$installed_hook" ]; then + echo "$installed_hook is a symlink - replacing." + elif [ -e "$installed_hook" ]; then echo "$installed_hook hook already exists." continue fi # Create the symlink - echo "ln -s $shipped_hook $installed_hook" - ln -s $shipped_hook $installed_hook + echo "ln -s -f \"$shipped_hook\" \"$installed_hook\"" + ln -s -f "$shipped_hook" "$installed_hook" done