Seguimos completando el servidor git …

Imagen miniatura para git-logo-cc-by-300x300.png… para que parezca profesional del todo.

Más ajustes en el repositorio

Además de asegurarme de que todos los repositorios son del tipo sin carpeta de trabajo he procedido a renombrarlos siguiendo la costumbre y les he añadido la extensión .git al nombre.

Otra característica más que he añadido han sido dos herramientas tomadas del artículo de Plan Zero y que permiten crear cómodamente un repositorio y añadir una clave de acceso  al cuenta del repositorio.

Animado por la sencillez del diseño me he lanzado y he creado un pequeño script que permite cambiar la descripción del repositorio cómodamente.

$ ssh git@venexma.net description empresa-network
Current description: 
Unnamed repository; edit this file 'description' to name the repository.
Enter the new description:
Configuración de servicios de red auxiliares
Description updated

El script es muy sencillo:

#!/bin/sh
# If no project name is given
if [ $# -eq 0 ]
then
   # Display usage and stop
   echo "Usage: description <project.git>"
   exit 1
else
   REPO=$1.git
fi

if [ ! -d "$REPO" ]; then
echo "Repository $REPO not found"
exit 1
else
echo "Current description: "
cat $REPO/description
fi
# Read the description
echo "Enter the new description:"
read desc
if [ -z "$desc" ]; then
echo "Description not changed !"
else
echo $desc > $REPO/description
echo "Description updated"
fi
exit 0

Acceso vía web

En la empresa el código está organizado en un servidor web virtual llamado code.empresa.com y el acceso a los distintos repositorios se realiza vía URL:

  • http://code.empresa.com/debian es el repositorio de paquetes Debian
  • http://code.empresa.com/git es el repositorio git

Así que la configuración de Apache es bastante sencilla:

Alias /git /var/lib/git

<Directory /var/lib/git>
        Options AllowOverride
        Order allow, deny
        Allow from all
</Directory>

Por lo que para clonar un repositorio con las tipografías de la empresa -por ejemplo- es suficiente con

$ git clone http://code.empresa.com/git/empresa-fonts.git

Pero, eso sí, es necesario completar antes algunos detalles en cada repositorio. El primero de ellos es asegurarse de que existe un programa dentro del directorio hooks de cada repositorio que lance a su vez al programa git update-server-info tras cada actualización. El segundo detalle es asegurarse de que al menos éste proceso se ha ejecutado una vez para que los datos estén preparados.

Respecto a la seguridad debo decir que este acceso es sólo para la intranet. Desde el punto de vista exterior es necesario identificarse antes.

Un paso más allá

La guía mencionada en el artículo anterior explica como configurar gitosis y gitweb. El primero facilita el mantenimiento de usuarios con permisos de escritura y lectura a los diferentes repositorios empleando él mismo otro repositorio de administración. El segundo sirve para dar una fachada agradable de los repositorios empleando un navegador web para recorrerlos.

gitosis no me sirve de nada al estar más sólo que la una así que me he lanzado a instalar y configurar gitweb y el resultado es bastante bueno. He limitado los repositorios visibles a los que creo que pueden ser interesantes y he dejado pendiente instalarme uno en mi propio servidor.