¿Cómo servir depósitos de Mercurial en el browser correctamente?

Estoy configurando mi server independiente que utilizará Mercurial para controlar todas las versiones. Cada proyecto tendrá su propia carpeta, con su propio repository. Que luego puedo clonar desde la computadora de mi casa, la computadora de trabajo o cualquier otra computadora yendo a esa carpeta en particular.

Quiero servir estos repositorys en un browser web para que pueda navegar visualmente cuando sea necesario. He visto alnetworkingedor y he visto esto: https://www.mercurial-scm.org/wiki/HgServeNginx

Parece que está en las pistas correctas, ya que usaré Nginx en este server de todos modos. Pero tengo curiosidad por saber cómo configurarlo correctamente. ¿Qué debo hacer en particular para servir eficientemente múltiples repositorys en mi server a través del browser web?

Cualquier ayuda o experiencia en esto sería muy útil para asegurarme de estar haciendo esto correctamente.

Muchas gracias.

Usando ese enlace, puede configurar tantas ubicaciones como tenga repos. En cada directory de repos, necesita ejecutar hg serve:

cd repos/repo1; nohup hg serve -p 8000 & cd repos/repo2; nohup hg serve -p 8001 & 

Luego puede enviar por proxy todas las requestes a través de nginx a los serveres hg en ejecución. Esta no es una buena manera. Este método necesita editar manualmente la configuration de nginx, ejecutar hg serve, etc. Pero este método le permite crear configuraciones de authentication separadas para cada repository. Por lo tanto, si planea compartir el repository con el cliente, puede administrarlo fácilmente.

En cambio, puede usar un script especial, que se contribuye con mercurial – hgwebdir. Información detallada, puede multar en esta página: https://www.mercurial-scm.org/wiki/PublishingRepositories#Publishing_Multiple_Repositories

ACTUALIZACIÓN: Tengo la versión mercurial 1.6 en el server, y para la interfaz de usuario web runnung repo usamos este script hgwebdir.py :

 #!/usr/bin/env python import sys import os os.environ["HGENCODING"] = "UTF-8" from mercurial.hgweb.hgwebdir_mod import hgwebdir from mercurial.hgweb.request import wsgiapplication from flup.server.fcgi import WSGIServer def make_web_app(): return hgwebdir('/home/hg/hgwebdir.conf') WSGIServer(wsgiapplication(make_web_app), umask=0000, bindAddress='/home/hg/hg.sock').run() 

hgwebdir.conf se ve así:

 [web] allow_push = some_useronly baseurl = push_ssl = false [collections] /home/hg/repos = /home/hg/repos 

Para ejecutar: nohup hgwebdir.py &, necesitas flup python module, entonces: easy_install flup

La parte relacionada de nginx.conf es:

 server { listen 80; server_name hg.example.com; gzip off; include fastcgi_params; location / { client_max_body_size 30m; auth_basic "Restricted Area"; auth_basic_user_file /home/hg/hg.password; fastcgi_pass unix:/home/hg/hg.sock; } }