git-shell(1)
============

NAME
----
git-shell - Restricted login shell for Git-only SSH access


SYNOPSIS
--------
[verse]
'git shell' [-c <command> <argument>]

DESCRIPTION
-----------

A login shell for SSH accounts to provide restricted Git access. When
'-c' is given, the program executes <command> non-interactively;
<command> can be one of 'git receive-pack', 'git upload-pack', 'git
upload-archive', 'cvs server', or a command in COMMAND_DIR. The shell
is started in interactive mode when no arguments are given; in this
case, COMMAND_DIR must exist, and any of the executables in it can be
invoked.

'cvs server' is a special command which executes git-cvsserver.

COMMAND_DIR is the path "$HOME/git-shell-commands". The user must have
read and execute permissions to the directory in order to execute the
programs in it. The programs are executed with a cwd of $HOME, and
<argument> is parsed as a command-line string.

To enable git-cvsserver access (which should generally have the
`no-interactive-login` example above as a prerequisite, as creating
the git-shell-commands directory allows interactive logins):

----------------
$ cat >$HOME/git-shell-commands/cvs <<\EOF
if ! test $# = 1 && test "$1" = "server"
then
	echo >&2 "git-cvsserver only handles \"server\""
	exit 1
fi
exec git cvsserver server
EOF
$ chmod +x $HOME/git-shell-commands/cvs
----------------

GIT
---
Part of the linkgit:git[1] suite
