diff options
-rwxr-xr-x | scripts/hooks-wrapper.sh | 12 | ||||
-rwxr-xr-x | scripts/install-git-hooks.sh | 15 |
2 files changed, 27 insertions, 0 deletions
diff --git a/scripts/hooks-wrapper.sh b/scripts/hooks-wrapper.sh new file mode 100755 index 000000000..e89a3567d --- /dev/null +++ b/scripts/hooks-wrapper.sh @@ -0,0 +1,12 @@ +#!/usr/bin/bash +if [ -x $0.local ]; then + $0.local "$@" || exit $? +fi + +basename=$(basename "$0") +hooks_dir="$GIT_DIR/../git-hooks" +hook="$hooks_dir/$basename" + +if [ -x "$hook" ]; then + "$hook" "$@" || exit $? +fi diff --git a/scripts/install-git-hooks.sh b/scripts/install-git-hooks.sh new file mode 100755 index 000000000..63faa345b --- /dev/null +++ b/scripts/install-git-hooks.sh @@ -0,0 +1,15 @@ +#!/usr/bin/bash +SCRIPTS_DIR=$(realpath $(dirname "$0")) +HOOK_DIR=$(realpath "$SCRIPTS_DIR/../.git/hooks") +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" + +for hook in $HOOK_NAMES; do + # If the hook already exists, is executable, and is not a symlink + if [ ! -h $HOOK_DIR/$hook -a -x $HOOK_DIR/$hook ]; then + mv $HOOK_DIR/$hook $HOOK_DIR/$hook.local + fi + # create the symlink, overwriting the file if it exists + # probably the only way this would happen is if you're using an old version of git + # -- back when the sample hooks were not executable, instead of being named ____.sample + ln -s -f $SCRIPTS_DIR/hooks-wrapper.sh $HOOK_DIR/$hook +done |