Si estás familiarizado con el sistema de control de revisiones Git, lo más probable es que hayas oído hablar de los sitios de software social que utilizan Git, como GitHub, Gitorious y Sourceforge. Estos sitios son excelentes para la colaboración, pero ¿qué pasa si quieres alojar un repositorio Git privado en tu propio sitio web personal?

GitList es un frontend PHP para Git que embellece y simplifica la navegación por tus repositorios Git, y puedes alojarlo donde quieras. Despídete de las tarifas exorbitantes por alojar tu repositorio privado; GitList es absolutamente gratuito, y debido a sus mínimas dependencias, puedes incluso ejecutarlo en (algunos) planes de alojamiento web compartido.

La interfaz seguramente les resulte familiar a los usuarios de GitHub. Es bastante elegante y de aspecto moderno en comparación con la interfaz más tosca de Gitweb, el frontend web por defecto de Git, y viene repleto de características fáciles de usar. Algunas de ellas son

  • Soporte para navegar por múltiples repositorios
  • Soporte de múltiples ramas y etiquetas
  • Fuentes RSS
  • Resaltado de sintaxis
  • Estadísticas sobre tus repositorios
  • Facilidad de instalación en comparación con otros frontales Git basados en la web

Requisitos

Como hemos mencionado anteriormente, puedes instalar GitList en algunos planes de alojamiento web compartido. Sin embargo, necesitas un par de cosas en tu servidor remoto que no todos los planes de alojamiento compartido ofrecen:

Ten en cuenta que el acceso SSH no es necesario para instalar GitList en sí, pero lo necesitarás para crear y gestionar tus repositorios Git remotos desde la línea de comandos.

Además de estos dos elementos, necesitarás

  • Apache con mod_rewrite habilitado o Nginx en tu servidor remoto
  • PHP 5.3.3 en tu servidor remoto
  • Git en tu máquina local

Instalación

Consigue un tarball del código de GitList desde la página principal de GitList.org. Puedes elegir entre la última versión estable, que en el momento de escribir este artículo es la 0.3, o la versión de desarrollo. Yo elegí la versión de desarrollo, pero puedes seguir las mismas instrucciones de instalación en ambos casos.

Extrae el tarball en el directorio de tu sitio en el que quieras instalar GitList – no confundir con el directorio en el que están instalados tus repositorios Git, al que llegaremos en un momento.

A partir de ahora, las instrucciones de este artículo asumirán que has iniciado sesión en tu sitio a través de SSH. Entra en tu directorio GitList y establece permisos 777 en el subdirectorio “cache” (créalo si no existe ya):

[mkdir cache]chmod777 cache

Ahora mueve el archivo config.ini-example a config.ini:

mv config.ini-example config.ini

Abra config.ini para editarlo en uno de los editores de texto disponibles en su servidor remoto. Por ejemplo

vi config.ini

Para esta parte, debe tener ya uno o más repositorios Git almacenados en algún lugar de su servidor. Si no lo tienes, lee la siguiente sección y luego vuelve aquí.

Rellena la sección de repositorios en el código con la ruta completa del directorio de tu proyecto Git. Si no sabes la ruta completa, puedes entrar en ese directorio e introducir pwd; el resultado es la ruta completa. En este caso, mi directorio de proyectos Git se llamaba “gitprojects”, y vivía bajo el subdirectorio “git” de mi sitio principal, así que escribí mi ruta en consecuencia (la estructura de las carpetas puede variar entre los hosts web, así que ten cuidado):

Cómo introducir un repositorio Git en tu servidor

Siga adelante y salte esta sección si ya ha configurado sus repositorios remotos. Si no es así, esta es una forma de hacerlo.

Primero prepara un repositorio Git en tu máquina local. Puedes hacer un repositorio desde cualquier directorio. Por ejemplo, digamos que tienes una carpeta llamada “turtles” con algunos archivos en ella:

cd turtlesgit init#esto inicializa el repositoriogit add*#esto hace que todos los archivos en el directorio sean rastreados para revisionesgit commit-m “Created my repo “*#comite los archivos y añade un comentario

Ahora entre por SSH en su servidor remoto para crear e inicializar un repositorio vacío:

mkdir tortugas.
git &&cd turtles.gitgit–bare init

Vuelve a tu máquina local y añade una rama remota. Lo habitual es llamarla “origen”, pero puedes usar el nombre que desees (usar otros nombres resulta útil si compartes los mismos archivos con varios repositorios remotos). Sigue el formato de este ejemplo, pero cambia las rutas de tus archivos adecuadamente:

git remote add origin ssh://yourusername@yourserver.com/home/yourusername/public_html/gitprojects/turtles.git

Ahora empuja tus archivos al servidor remoto:

git push–all origin

Y ya está. Ahora tienes una copia remota de tu repositorio Git que puedes navegar con GitList. No olvides poner primero la ruta del directorio padre en tu config.ini.

Asegurando tu repositorio

Si te preocupa mantener tu repositorio alejado de miradas indiscretas, lamento decirte que GitList no proporciona ningún método de autenticación de usuarios integrado. Sin embargo, en la mayoría de los casos puedes proteger con contraseña un directorio directamente desde el panel de control de tu sitio web. En cPanel, está aquí en la sección “Seguridad”:

Alternativamente, puedes configurar manualmente el servidor Apache para restringir el acceso a determinados usuarios.