Servir un repo mercurial por http (solo lectura)

mercurialArco

El objetivo es simple, pero útil. Tenemos un repositorio de mercurial (hg), al que accedemos por SSH. Queremos compartirlo con el mundo, pero no queremos abrirle cuanta ssh al mundo en nuestro servidor. ¿Solución? Compartirlo por HTTP.

Ingredientes

  • El repo de mercurial
  • Un servidor Web

Suponemos que tenemos un repositorio de mercurial clonado en /home/user/repo. Y que tenemos instalado el servidor web que vayamos a usar. Además, en este caso, no usamos un CGI, sino que nos aprovechamos de las capacidades de Indexado del servidor Web. Si quieres tirar de CGI, en [2] tienes lo que buscas.

Con thttp

En este caso es muy sencillo:

box:/home/user/repo# thttpd -D -d .

¡Así de fácil! Es decir, simplemente hacemos que el servidor Web encuentre los ficheros y listo. Ahora solo te queda jugar con las opciones del servidor Web. Por ejemplo, si quitas el ‘-D’, el proceso se lanza como demonio. Es posible configurarlo para que arranque al inicio y tal… pero no quisiera yo quitarte la diversión de experimentar.

Con Apache

Pues lo mismo Eye-wink

Descargarse el repo

También muy sencillo, usando url’s del tipo static-http://maquina/recurso, con el ‘clone’ de toda la vida:

$ hg clone static-http://maquina/recurso

Referencias

  1. http://www.selenic.com/mercurial/wiki/index.cgi/StaticHTTP
  2. http://www.selenic.com/mercurial/wiki/index.cgi/CGIinstall
  3. http://www.selenic.com/mercurial/wiki/index.cgi/HgWebDirStepByStep