Creando un servidor git …

git-logo-cc-by-300x300.png… entiendo por qué hablan tan bien de él.

La razón por la que quiero crear un servidor git estando más sólo que la una es para facilitarme la vida con las diferentes instalaciones en las que trabajo. Estas son básicamente tres: mi lugar de trabajo, mi casa y los servidores en la red. En todos ellos preciso de un acceso de lectura y escritura a mis proyectos, y como no puedo estar seguro del estado de la máquina de casa ni la mía personal en mi trabajo utilizo una que siempre debería estar en funcionamiento como almacén central.

pro-git.jpgLuego he pensado que algunos de mis pequeños proyectos podrían ser de utilidad para alguien -al menos como curiosidad- y me he dicho: ¿ por qué no hacerlo en condiciones  como si fuese de verdad ? He encontrado toda la ayuda que necesitaba en el libro Pro Git de Scott Chacon, de libre acceso en la web del proyecto.

Me he puesto con ello y, dado que ya tenía el programa git  instalado en el servidor y los repositorios sin carpeta de trabajo (bare) en una ruta aparte (/var/lib/git), sólo he tenido que ir cumpliendo etapas tal y como me describen y aconsejan.

Un usuario específico

Procedo a crear un usuario específico dentro del servidor para que se haga cargo de todo. La característica más importante es que el shell a utilizar será uno específico para operaciones con Git y que su directorio personal estará situado en la raíz del repositorio.

# adduser --home /var/lib/git --shell /usr/bin/git-shell --no-create-home --ingroup git --gecos "Repository owner" git 

Cambio la propiedad de todo el repositorio al nuevo usuario y adelantándome a las instrucciones también indico que el grupo al que pertenecen todos los archivos es el usuario del servidor web (www-data) para que éste pueda leer su contenido. Ahora bien, es muy importante que los permisos de escritura para el grupo sean desactivados, especialmente en los directorios /var/lib/git y /var/lib/git/.ssh, o no será posible acceder directamente sin contraseña.

Esta cuenta tiene algunas peculiaridades que merece la pena destacar porque me he encontrado con varios problemas tontos por no leer con calma la documentación. Afortunadamente he encontrado la página de Plan Zero que, además de resolver dudas y guiarte en el inicio, proporciona software verdaderamente útil. Este software extra, y cualquier otro que queramos añadir, debe situarse en un directorio llamado git-shell-commands con permisos de acceso y ejecución. El paquete Debian incluye un par de programas para listar los repositorios y mostrar la ayuda en /usr/share/doc/git/contrib/git-shell-commands).