diff options
author | Parabola git <git@parabola.nu> | 2016-07-07 22:31:39 +0000 |
---|---|---|
committer | Parabola git <git@parabola.nu> | 2016-07-07 22:31:39 +0000 |
commit | 0c774a11d390fba141a39a4ec96557015d29626d (patch) | |
tree | b5691b89681a4c1f24882c62b33f858c57199d4b /git-shell-commands/hook-install | |
parent | d8dbd10192041d5638987fb279a2e452ce5adcfb (diff) | |
parent | f985decc7edecd2376a4d08cdc29bbf42f18da12 (diff) |
Merge remote-tracking branch 'hackers/lukeshu/tmp'
Diffstat (limited to 'git-shell-commands/hook-install')
-rwxr-xr-x | git-shell-commands/hook-install | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/git-shell-commands/hook-install b/git-shell-commands/hook-install new file mode 100755 index 0000000..b38836a --- /dev/null +++ b/git-shell-commands/hook-install @@ -0,0 +1,28 @@ +#!/bin/sh +# * hook-install +# Instala un hook en un repo +# ssh git@host hook-install hook script repo [alt-dir] + +set -e + +exit 1 # I don't trust this script + +hook="${1}" +script="${HOME}/.ssh/git-hooks/${2}" +repo="${3}" +clone="${4:-${repo}}" + +repo="$(sed -r 's,^/*,,' <<<"$repo")" +_repo="$(sed -r -e '/(^|\/)\.\.($|\/)/d' -e "s,[^A-Za-z0-9\./_~-],,g" <<<"$repo")" +test "$repo" = "$_repo" || { printf 'Illegal name: %s\n' "${repo}"; exit 1; } +test -d "$repo".git || { printf 'Does not exist: %s\n' "${repo}"; exit 1; } + +# Tests +test -f "${repo}.git/HEAD" +test -f "${clone}/.git/HEAD" + +# Installs the generic hook that runs scripts +test -f "${repo}.git/hooks/${hook}" || ln -s "${HOME}/.ssh/git-hooks/generic" "${repo}.git/hooks/${hook}" + +# Install the hook on the repo +git config -f "${repo}.git/config" --add "hacking.hooks.${hook}.${2}" "${clone}" |