Compartir (enviar) a git repo sin dar permissions de escritura

Estoy trabajando en un proyecto de queueboración y hemos creado un git repo para administrar el código. Está en un server que alojé, compartido a través de ssh (el repository está en / srv / project). La única forma que encontré para compartir el acceso de inserción a mis compañeros de equipo es crear un nuevo usuario para cada uno, agregarlos a un grupo de "proyecto" y hacer que el directory repo pueda ser escrito por ese grupo.

Esto tiene una desventaja: si alguno de mis compañeros de equipo decide entrar al server y rm -rf todo el repository, no puedo hacer nada al respecto. No es que no confíe en ellos, sino que es "mejor prevenir que lamentar" (también las grandes organizaciones deben tener una solución para este problema).

¿Hay alguna forma de otorgar capacidades de inserción pero sin permissions de escritura?

Usar SSH es IMPRESCINDIBLE. GitHub tampoco es aceptable.

¡Gracias!

Puede tener una count dedicada, por ejemplo, con el nombre de usuario git , que use git-shell como shell en lugar de bash. Es decir, cambie la count en /etc/passwd partir de esto:

 git:x:1000:1000::/home/git:/bin/sh 

a esto:

 git:x:1000:1000::/home/git:/usr/bin/git-shell 

También se recomienda utilizar keys ssh para authentication en lugar de passwords. Tomé este ejemplo del libro Pro Git, donde se explica con más detalle:

http://git-scm.com/book/es/Git-on-the-Server-Setting-Up-the-Server

Si no tiene permissions para modificar las counts de usuario (por ejemplo, en un alojamiento compartido), puede usar las keys ssh con una restricción de command en el file ~/.ssh/authorized_keys , como esta:

 command="perl -e 'exec qw(git-shell -c), $ENV{SSH_ORIGINAL_COMMAND}'",no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB... 

De esta forma, los usuarios autorizados pueden iniciar session con ssh, pero en lugar de un shell normal, estarán restringidos a git-shell . Esto es un poco hackish, es mejor si solo puedes cambiar el shell en /etc/passwd .

Eche un vistazo a la gitolita . Gitolite es una capa de control de acceso que le permite servir repositorys git a través de ssh sin otorgar acceso general a shell, y le proporciona características como la restricción de quién puede presionar a ciertas twigs, también.

Si quieres algo más gráfico pero autohospedado , GitLab es bastante agradable.