Como instalar un repositorio remoto con git en servidor + clientes linux
La siguiente configuración fue probada en debian lenny como servidor y ubuntu , trisquel 4.5 como maquinas clientes.
Nota1:
Para otras distribuciones de Linux se recomienda adaptar los pasos a las variantes y caracteristicas de la configuración de git especificas de nuestra distribución.
Nota2:
Se entiende que el lector tiene conocimientos básicos de linux y su interacción con con el CLI, conexiones ssh, claves publicas y privadas.
Previo y Configuración del servidor
El Git al ser un sistema manejador de versiones distribuido y no centralizado(como subversión), lo único necesario antes de empezar es: tener git en el servidor y en las máquinas clientes.
Por cuestión de seguridad y facilidad de la administración cuando existen múltiples desarrolladores, lo que se recomienda es crear un usuario git en el S.O. y apuntar sus archivos(que seran capetas de proyectos) a la carpeta de opciones /opt/ y su interprete hacia el interprete proporcionado por git.
adduser #introducimos los datos que nos pide
Editamos el registro del usuario git el archivo /etc/passwd quedan la configuración algo como:
git:x:1000:1000::/home/git:/usr/bin/git-shellgit:x:1000:1000::/home/git:/usr/bin/git-shell
Para concluir con la configuración del servidor hay que darle al usuario git permisos para escritura en el directorio /opt/ y debemos también agregar un usuario administrador que sera el que pueda crear nuevos proyectos, al que llamaremos(usuario_admin) .
Agregando nuevo proyecto
Una vez esto, desde alguna máquina cliente creamos una carpeta de nuestro nuevo repositorio:
mkdir miApp
cd miApp git init
Partiendo del concepto que el git es un sistema distribuido y que la carpea.git en el servidor es en esencia nuestra carpeta .git( con pequeñas diferencias ), nos podemos enviar los archivos de nuestra carpeta .git a nuestro servidor(olvidándonos de cosas como git clone —bare mi_proyecto.git):
scp -rp .git usuario_admin@miDominio.net://opt/mi_proyecto.git
Ojo: no podremos utilizar el usuario git ya que por seguridad el shell-git desactiva las conexiones ssh p.e.
ssh git@miDominio.net PTY allocation request failed on channel 0 fatal: unrecognized command 'gitosis-serve schacon@quaternion' Connection to gitserver closed.
agreando brazo origin y finalizando la configuración
Ahora desde la misma máquina cliente podemos añadir el branch origin:
git remote add origin ssh://git@miDominio.net/opt/mi_proyecto.git
Nota: observe que el brazo se agrego hacia el usuario git.
Listo lo ultimo es probar que todo funcione:
touch README git add README git commit -m "message for change log" git push -u origin master
Descargando el proyecto.
Los usuarios que tengan el acceso del usuario git podran integrarse al proyecto como:
git clone ssh://git@miDominio.net/opt/mi_proyecto.git
Y listo!..

Pingback: Nota para el futuro » Instalación Git + GitWeb ( I )