Leí en más de un lugar que la configuración de hgweb, el repositorio web de mercurial, es difícil de lograr.
Había yo empezado a tratar de poner dicho repositorio en un servidor web que tengo con HostGator; pero cuando me topé con pared, decidí empezar por ponerlo localmente.
Los requisitos son sencillos de lograr. Básicamente:
Hay 2 directorios que crear:
/var/hg/
)/var/www/html/hg/
)Ambos directorios deben tener permisos adecuados de tal forma que apache (o el servidor web que uses) pueda leer y ejecutar el script web y escribir al repositorio.
Nota: Si tienes SELinux habilitado, es más complicado; y no pienso cubrir cómo hacerlo.
Éste archivo debe localizarse en el disco duro (se crea cuando se instala mercurial) y copiarlo al folder web. Yo aparte lo renombré a index.cgi
. Hay un solo parámetro que tuve que configurar; la ubicación del archivo de configuración:
config = "/var/www/html/hg/hgweb.config"
hgweb.wsgi
Resulta que hay 2 versiones de hgweb; una es la cgi y la otra es la wsgi. Aparentemente la wsgi tiene mejor desempeño, pero para términos de este "tutorial", vamos a usar el cgi.
Éste archivo simplemente lo configuré de la siguiente manera:
[web]
baseurl = /hg
[paths]
/ = /var/hg/*
En la sección de [paths]
, le estoy diciendo que publique todos los repositorios que encuentre bajo /var/hg/
.
Después de hacer un hg init
en mi proyecto, se crea automátivamente el sub-folder .hg
; pero yo debo crear manualmente el archivo .hg/hgrc
con los siguientes contenidos:
[web]
description = Descripción de mi proyecto.
contact = Rodrigo Flores
allow_push = *
push_ssl = false
[paths]
default-push = http://localhost/hg/test/
Los parámetros description
y contact
son bastante directos, pero vale la pena mencionar los otros 3:
allow_push
- Es el listado de usuarios que tienen permiso de hacer un push.push_ssl
- Determina si debemos usar ssl. Como mi servidor local no tiene habilitado https, lo deshabilité.default-push
- Determina a dónde hacer un push cuando no se especifica una ruta.La primera vez, tuve que copiar manualmente mi código (con todo y la carpeta .hg
) a /var/hg/
; pero posteriormente pude escribir cambios y consultar en la página web de mi servidor local.
Un problema con el que me topé durante mucho tiempo era que no se desplegaban correctamente los caracteres especiales y no encontraba una forma de configurar para que usara utf-8. Hasta que encontré el reporte de un Bug al respecto.
La solución consiste en agregar una directiva SetEnv
en httpd.conf
:
<Directory "/var/www/html/hg/">
SetEnv HGENCODING utf-8
...
</Directory>
Al ver que realmnte había sido muy sencillo instalarlo, volví a probar en mi servidor compartido.
Resulta que no tengo soporte para mod_python en mi plan.