Encontré esto después de correr locate git-shell-commands
cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
Programas de muestra invocables a través de git-shell. Coloque un directorio llamado 'git-shell-command' en el directorio de inicio de un usuario cuyo shell es git-shell. Entonces, cualquiera que inicie sesión como ese usuario podrá ejecutar ejecutables en el directorio 'git-shell-command'.
Comandos provistos:
ayuda: Imprime los nombres de los comandos disponibles. Cuando se ejecuta de forma interactiva, git-shell ejecutará automáticamente 'ayuda' al inicio, siempre que exista.
lista: muestra cualquier repositorio vacío cuyo nombre termina con ".git" en el directorio de inicio del usuario. No hay otros repositorios de git visibles, aunque podrían ser clonables a través de git-shell. 'list' está diseñado para minimizar la cantidad de llamadas a git que deben realizarse para encontrar repositorios disponibles; Si su configuración tiene repositorios adicionales que deberían ser detectables por el usuario, es posible que desee modificar 'lista' en consecuencia.
Entonces ejecuté los siguientes comandos como root:
cp /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands /home/git -R
chown git:developers /home/git/git-shell-commands/ -R
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list
exit
Luego pude ejecutar lo siguiente como git
usuario:
[me@svn ~]$ su git
Password:
Run 'help' for help, or 'exit' to leave. Available commands:
list
git> help
Run 'help' for help, or 'exit' to leave. Available commands:
list
git> list
git> exit
Ahora no veo qué buena ayuda y lista son, pero el inicio de sesión funcionó. :)
git-shell
es un shell restringido que se utilizará solo para la funcionalidad de inserción / extracción (es decirgit push
,git fetch
ygit pull
). No está destinado a ser interactivo, por lo que no debe iniciar sesión en un shell interactivo. Puede hacerlo algo interactivo agregando ungit-shell-commands
directorio en la página de inicio del usuario y simulando algunos binarios dentro. Pero es muy limitado (no hay binario paracd
, por ejemplo), por lo que una mejor alternativa es iniciar sesión comoroot
unsudo
usuario capaz ysudo -u git -s
obtener unbash
shell completo debajo delgit
usuario.