32 lines
1.1 KiB
Bash
Executable file
32 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# Usage: ssh git@host symbolic-ref <repo> <arguments to git-symbolic-ref>
|
|
#
|
|
# allow 'git symbolic-ref' over a gitolite connection
|
|
|
|
# Security: remember all arguments to commands must match a very conservative
|
|
# pattern. Once that is assured, the symbolic-ref command has no security
|
|
# related side-effects, so we don't check arguments at all.
|
|
|
|
# Note: because of the restriction on allowed characters in arguments, you
|
|
# can't supply an arbitrary string to the '-m' option. The simplest
|
|
# work-around is-to-just-use-join-up-words-like-this if you feel the need to
|
|
# supply a "reason" string. In any case this is useless by default; you'd
|
|
# have to have core.logAllRefUpdates set for it to have any meaning.
|
|
|
|
die() { echo "$@" >&2; exit 1; }
|
|
usage() { perl -lne 'print substr($_, 2) if /^# Usage/../^$/' < $0; exit 1; }
|
|
[ -z "$1" ] && usage
|
|
[ "$1" = "-h" ] && usage
|
|
[ -z "$GL_USER" ] && die GL_USER not set
|
|
|
|
# ----------------------------------------------------------------------
|
|
repo=$1; shift
|
|
repo=${repo%.git}
|
|
gitolite access -q "$repo" $GL_USER W any || die You are not authorised
|
|
|
|
# change head
|
|
cd $GL_REPO_BASE/$repo.git
|
|
|
|
git symbolic-ref "$@"
|