#!/usr/bin/env fish set REPO_PERMISSIONS /etc/repo-permissions set GIT_COMMAND_REGEX "^(git-(?:upload-pack|receive-pack|upload-archive)) '((?:\/[a-zA-Z-]+)+.git)'\$" # echo check for permissions set -l checkUser (whoami) set -l matcher (string match -r -g $GIT_COMMAND_REGEX "$argv") set -l gitCommand $matcher[1] set -l repo $matcher[2] set -l repoDir srv repos set -l repoDir /(string join -n '/' $repoDir (string split '/' $repo)) cat $REPO_PERMISSIONS | grep -q -E "^$repoDir:$checkUser" or exit 1; # run command /usr/bin/sudo -u git /usr/bin/git-shell -c "$gitCommand '$repoDir'"