#!/bin/sh
# Форс-команда из authorized_keys: command="git-ns <namespace>".
# Пускает пользователя только в git-операции над репозиториями ЕГО неймспейса.
NS="$1"
REPOS="${REPOS_DIR:-/repos}"
set -- $SSH_ORIGINAL_COMMAND
cmd="$1"
repo=$(printf '%s' "$2" | tr -d "'\"")
repo="${repo#/}"
case "$cmd" in
  git-receive-pack|git-upload-pack|git-upload-archive) ;;
  *) echo "разрешены только git-команды" >&2; exit 1 ;;
esac
# без слеша -> свой неймспейс
case "$repo" in
  */*) ;;
  *) repo="$NS/$repo" ;;
esac
# запрет выхода в чужой неймспейс
case "$repo" in
  "$NS/"*) ;;
  *) echo "чужой неймспейс запрещён" >&2; exit 1 ;;
esac
repo="${repo%/}"
exec git-shell -c "$cmd '$REPOS/$repo'"
