На днях припекло и я решил-таки выставить в сеть репозитории в сеть по http.
Ясное дело, что выставлять их read-write - не кошерно, в мире много тупых ублюдков, которым лишь бы сломать что и нагадить.
Итак, что нам понадобится, чтобы репозиторий стал доступен? Нам понадобится сам репозиторий, Apache и mod_wsgi, ну и конечно работающий hg.
Я не буду описывать как настраивать nginx, чтобы он запроксировал запросы в апач, ибо предполагаю, что эта тема уже известная.
В апаче достаточно прописать вот такой сниппет:
WSGIScriptAlias /hg "/var/www/htdocs/hg/hgweb.wsgi"
<Directory /var/www/htdocs/hg>
Require all granted
AllowOverride All
AddHandler wsgi-script .wsgi
</Directory>
Далее, репозиторий надо разместить не в docroot сервера, соответственно, в /var/www/htdocs/hg мы кладём 2 файлика.
/var/www/htdocs/hg/hgweb.config:
[paths]
/ = /путь/до/кататлога/с/репозиториями/*
[web]
baseurl = /hg
/var/www/htdocs/hg/hgweb.wsgi:
# -*- coding: utf-8 -*-
config = "/var/www/htdocs/hg/hgweb.config"
# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()
# enable demandloading to reduce startup time
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb
application = hgweb(config)
Перезапускаем Апач и вуаля, репозиторий доступен по http://web.site/hg