Trasteando para montar mi propio servidor GIT, he creado esta receta, enfocada a mi necesidad pero que espero que le sirva a alguien más. Me he basado principalmente en un tutorial que encontré en internet, cuya referencia tenéis en los enlaces adjuntos. Lo he probado en Debian y no veo nada que impida que funcione también en Ubuntu. Aquí va:
Primero instalamos los paquetes necesarios…
sudo apt-get install apache2 git-core gitweb openssh-server
Después creamos el directorio servido por apache que contendrá lo necesario para gitweb.cgi. En caso de no existir, también crearemos el directorio del propio repositorio en /var/cache/git
sudo mkdir /var/www/git [ -d "/var/cache/git" ] || sudo mkdir /var/cache/git
A continuación se crea el fichero para la configuración del virtualhost de git en /etc/apache2/sites-available/git
<VirtualHost git.rebeco.org> ServerAdmin rebeco@gmail.com DocumentRoot /var/www/git <Directory /var/www/git> Allow from all AllowOverride all Order allow,deny Options ExecCGI <Files gitweb.cgi> SetHandler cgi-script </Files> </Directory> DirectoryIndex gitweb.cgi SetEnv GITWEB_CONFIG /etc/gitweb.conf </VirtualHost>
Se añade el virtualhost a la configuración de arranque de apache…
sudo a2ensite git
Se copian los ficheros de gitweb al directorio del virtualhost…
sudo cp /usr/share/gitweb/* /var/www/git sudo cp /usr/lib/cgi-bin/gitweb.cgi /var/www/git
Como hemos configurado git en el raíz de un subdominio no tenemos que tocar los path del fichero /etc/gitweb.conf Si se instala como directorio de un dominio existente se tendrían que cambiar para adaptarlos a la nueva ruta. Se reinicia apache para que los cambios sean efectivos.
sudo /etc/init.d/apache2 restart
Con esto ya tenemos montado el servidor git con vista vía apache (que podemos restringir en el mismo apache si es necesario). Ahora vamos a crear un repositorio de prueba para ver que funciona todo. Creamos primero su directorio.
cd /var/cache/git/ sudo mkdir prueba sudo chown usuario.usuario prueba cd prueba
Inicializamos el repositorio. En mi caso con la opción –bare ya que lo que estoy montando es un repositorio «central» donde hacer tanto push como pull remoto, no uno de trabajo local.
git init --bare
echo "Descripción del proyecto" > description
git config --global user.name "Pedro León"
git config --global user.email "rebeco@gmail.com"
git commit -a
Y con esto el servidor git ya está disponible vía ssh, que es como yo quiero usarlo. Se puede probar desde otra máquina con:
git clone usuario@git.rebeco.org:/var/cache/git/prueba
Para configurar el server por protocolo git es mejor que mires la documentación u otro tutorial, como por ejemplo en el que me he basado yo.