Eu acho que o Apache é uma ótima maneira de compartilhar repositórios hg. O script hgweb.wsgi não apenas oferece a possibilidade de executar vários repositórios, mas também permite que os desenvolvedores consultem de forma conveniente o código-fonte do projeto por caminho ou revisão de uma fonte definitiva.
O procedimento a seguir fornecerá uma maneira fácil de publicar um repositório e disponibilizá-lo por meio de uma conexão da Web https com usuários autenticados.
Primeiro de tudo, sugiro fazer um clone do seu repositório sem um diretório de arquivos local.
hg clone -U <myproject> <myproject_to_serve>
Em seguida (usando a configuração WSGI, que é fácil e fácil), faça o seguinte:
Mova seu repositório para um local conveniente para o qual ele será veiculado:
mv <myproject_to_serve> /var/www/hg/<myproject_to_serve>
Certifique-se de que o repositório é lido / gravável pelo usuário do servidor web:
chown -R www-data:www-data /var/www/hg/<myproject_to_serve>
Agora configure direitos de leitura / gravação para os usuários do projeto e forneça algumas informações para a listagem do projeto na home page do seu servidor:
vim /var/www/hg/myproject_to_serve>/.hg/hgrc
[web]
description = 'This is my new web-enabled project <myproject>'
contact = [email protected]
# consider limiting push usage to only a subset of users
allow_push = *
Agora configure o WSGI
vim /var/www/hg/hgweb.config
[paths]
/myproj = /var/www/hg/my_project_to_serve
Agora configure o apache
<VirtualHost *:443>
ServerName hg.mydomain.net
ServerAdmin [email protected]
ErrorLog /var/www/mydomain/logs/hg_error_log
CustomLog /var/www/mydomain/logs/hg_access_log common
SSLEngine on
SSLCertificateFile /etc/ssl/mydomain_net.crt
SSLCertificateKeyFile /etc/ssl/mydomain_net.key
DocumentRoot "/var/www/hg/"
<Location "/hg">
SetHandler None
</Location>
# path to provided hgweb.wsgi script
WSGIScriptAlias / /var/www/hg/scripts/hgweb.wsgi
<Location / >
AuthType Digest
AuthName "MySoftware"
AuthUserFile /home/software/software_web_permissions
Require valid-user
</Location>
</VirtualHost>
O texto acima requer que você tenha:
- O script hgweb.wsgi (que vem com uma instalação padrão do Mercurial, digamos, Debian) em algum lugar convenientemente disponível
- Um AuthUserFile no formato htdigest do apache para criar usuários autenticados.
Navegar para hg.mydomain.net
mostrará uma lista bem formatada de projetos disponíveis. hg.mydomain.net/myproj
mostrará, após a autenticação bem-sucedida, o status atual do seu projeto de acordo com o /var/www/hg/<myproject_to_serve>
repo.