From: Richard Hartmann Date: Sat, 14 Jan 2012 16:04:19 +0000 (+0100) Subject: Improve hook support X-Git-Url: https://git.madduck.net/code/vcsh.git/commitdiff_plain/a4de1a34059bcccba7b97c87865bd3bc3d798667?ds=sidebyside Improve hook support * Fix and expand manpage * Use explicit variable names in hook() --- diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index c6e0152..bcea71c 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -113,18 +113,21 @@ appropriate values for fake bare git repositories. ## HOOK SYSTEM -`vcsh` provides a hook system. Hook scripts need to be executable and placed -in <$XDG_CONFIG_HOME/vcsh/hooks-available>. From there, they should be -soft-linked <$XDG_CONFIG_HOME/vcsh/hooks-enabled>. +`vcsh` provides a hook system. Hook scripts must be executable and should be +placed in <$XDG_CONFIG_HOME/vcsh/hooks-available>. From there, they can be +soft-linked into <$XDG_CONFIG_HOME/vcsh/hooks-enabled>; `vcsh` will only +execute hooks that are in this directory. Hooks follow a simple format. `pre-run` will be run before anything is run. If you want to have more than one script for a certain hook, just append -strings to order them. A system of `pre-run`, `pre-run.10`, `pre-run.20` etc -is suggested. The dot it optional. +any kind of string to order them. A system of `pre-run`, `pre-run.10`, +`pre-run.20` etc is suggested; other options would be `pre-run-10` or +`pre-run.sh`. A dot after the hook name is optional. If you want to create hooks for a specific `vcsh` repository, simply prepend -the repository's name, followed by a dot, i.e. `zsh.pre-run`. This dot is -mandatory. +the repository's name, followed by a dot, i.e. `zsh.pre-run`. Otherwise, the +same rules as above apply. The dot between the repository's name and the hook +is mandatory, though. ## DETAILED HOWTO AND FURTHER READING diff --git a/vcsh b/vcsh index bf97cbf..29b5eb9 100755 --- a/vcsh +++ b/vcsh @@ -115,9 +115,9 @@ git_dir_exists() { } hook() { - for f in $VCSH_HOOK_D/$1* $VCSH_HOOK_D/$VCSH_REPO_NAME.$1*; do - [ -x "$f" ] || continue - "$f" + for hook in $VCSH_HOOK_D/$1* $VCSH_HOOK_D/$VCSH_REPO_NAME.$1*; do + [ -x "$hook" ] || continue + "$hook" done }