X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/e4f0f9161a542e9c802e7d98b55119b6d3324ea1..bca2a941861cdcb8e124e5a0f9fd08198958d0f6:/vcsh diff --git a/vcsh b/vcsh index 52afbe1..d3e2329 100755 --- a/vcsh +++ b/vcsh @@ -1,7 +1,7 @@ #!/bin/sh # This program is licensed under the GNU GPL version 2 or later. -# (c) Richard "RichiH" Hartmann , 2011 +# (c) Richard "RichiH" Hartmann , 2011-2012 # For details, see LICENSE. To submit patches, you have to agree to # license your code under the GNU GPL version 2 or later. @@ -11,6 +11,7 @@ [ -r "$XDG_CONFIG_HOME/vcsh/config" ] && . "$XDG_CONFIG_HOME/vcsh/config" [ -n "$VCSH_DEBUG" ] && set -vx [ -z "$VCSH_REPO_D" ] && VCSH_REPO_D="$XDG_CONFIG_HOME/vcsh/repo.d" +[ -z "$VCSH_HOOK_D" ] && VCSH_HOOK_D="$XDG_CONFIG_HOME/vcsh/hooks-enabled" [ -z "$VCSH_BASE" ] && VCSH_BASE="$HOME" [ -z "$VCSH_GITIGNORE" ] && VCSH_GITIGNORE='exact' @@ -93,7 +94,7 @@ delete() { $files AGAIN, THIS WILL DELETE YOUR DATA! -To continue, type \"Yes, do as I say\"" +To continue, type 'Yes, do as I say'" read answer [ "x$answer" = "xYes, do as I say" ] || exit 16 for file in $files; do @@ -103,14 +104,23 @@ To continue, type \"Yes, do as I say\"" } enter() { + hook pre-enter use $SHELL + hook post-enter } git_dir_exists() { [ -d "$GIT_DIR" ] || fatal "no repository found for '$VCSH_REPO_NAME'" 12 } +hook() { + for hook in $VCSH_HOOK_D/$1* $VCSH_HOOK_D/$VCSH_REPO_NAME.$1*; do + [ -x "$hook" ] || continue + "$hook" + done +} + init() { [ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10 export GIT_WORK_TREE="$VCSH_BASE" @@ -150,16 +160,20 @@ rename() { } run() { + hook pre-run use $VCSH_EXTERNAL_COMMAND + hook post-run } setup() { + hook pre-setup use git config core.worktree "$GIT_WORK_TREE" git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME" git config vcsh.vcsh 'true' [ -e "$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME" ] && git add -f "$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME" + hook post-setup } use() {