Você encontrará um mecanismo semelhante com o gitolite , baseado em ssh e comando forçado .
(incluindo consultas ldap ).
No entanto, não permite shell interativo, que pode ser o seu problema .
O OP Frank Brenner adiciona:
Ah, I figured it out - the command has to be in single quotes. I suppose
$SSH_ORIGINAL_COMMAND
was getting expanded before git-shell was started.
Isso é confirmado no script de comando forçado do gitolite é um Perl, terminando com:
# ----------------------------------------------------------------------------
# over to git now
# ----------------------------------------------------------------------------
if ($ENV{REQUEST_URI}) {
log_it($ENV{REQUEST_URI});
exec $ENV{GIT_HTTP_BACKEND};
# the GIT_HTTP_BACKEND env var should be set either by the rc file, or as
# a SetEnv in the apache config somewhere
}
log_it();
$repo = "'$REPO_BASE/$repo.git'";
exec("git", "shell", "-c", "$verb $repo") unless $verb eq 'git-init';
Observe que a $repo = "'$REPO_BASE/$repo.git'"
line: contém aspas simples.