Commit dc825a5e authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Added default hook scripts to init command

The init command reads a comma-separated list of hook scripts to install
from git-hooks.$hook, unless the --ignore-defaults argument is given.
parent 6273c328
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -29,6 +29,9 @@ source "$LIBDIR"/arg_parse_functions
BIN=`basename "$0"`
GIT="git ${GIT_DIR+--git-dir "${GIT_DIR}"}"
GIT_DIR="${GIT_DIR:-`git rev-parse --git-dir`}"
GIT_DIR=`readlink -f "$GIT_DIR"`
GIT_CONFIG="${GIT_CORE:+$GIT_CORE/git-config}"
GIT_CONFIG="${GIT_CONFIG:-git config}"
HOOKS="update pre-receive post-receive"

usage ()
@@ -66,11 +69,12 @@ mv_unique ()
cmd_init ()
{
	summary="set up git-hook directories in a repository"
	local force keep skip
	local hook tmp
	local force keep skip ignore_def
	local hook tmp defaults default
	add_arg FLAG -f force; add_arg_alias force --force
	add_arg FLAG -k keep; add_arg_alias keep --keep
	add_arg FLAG -s skip; add_arg_alias skip --skip
	add_arg FLAG -i ignore_def; add_arg_alias ignore_def --ignore-defaults
	parse_args "$@" || return

	cd "$GIT_DIR"/hooks
@@ -92,6 +96,15 @@ cmd_init ()
		fi
		[ -e $hook ] && mv $hook $hook.d/org_$hook
		ln -s "$LIBDIR"/run-hooks $hook

		[ x$ignore_def == xyes ] && continue

		defaults=`$GIT_CONFIG --get git-hooks.$hook` || continue
		IFS=$',' defaults=( $defaults )
		for default in "${defaults[@]}"; do
			free_args
			cmd_add add $hook $default
		done
	done
}