From e3f6b8e3246f89c6df4052006d18df542721c16e Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 2 Jun 2014 13:48:51 -0400 Subject: lukeshu-ify the git-shell-commands mostly, handle escaping repo names consistently-ish --- git-shell-commands/hook-install | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'git-shell-commands/hook-install') diff --git a/git-shell-commands/hook-install b/git-shell-commands/hook-install index 08a0340..b38836a 100755 --- a/git-shell-commands/hook-install +++ b/git-shell-commands/hook-install @@ -5,19 +5,24 @@ set -e +exit 1 # I don't trust this script + hook="${1}" script="${HOME}/.ssh/git-hooks/${2}" -repo="${HOME}/${3}" +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}/HEAD" +test -f "${repo}.git/HEAD" test -f "${clone}/.git/HEAD" # Installs the generic hook that runs scripts -test -f "${repo}/hooks/${hook}" || ln -s "${HOME}/.ssh/git-hooks/generic" "${repo}/hooks/${hook}" +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}/config" --add "hacking.hooks.${hook}.${2}" "${clone}" - -exit $? +git config -f "${repo}.git/config" --add "hacking.hooks.${hook}.${2}" "${clone}" -- cgit v1.2.3