Eu acho que você provavelmente está perdendo é que é perfeitamente permitido criar um arquivo .hg/hgrc dentro de cada repositório, e esses arquivos podem conter allow_push e allow_read entradas.
Nós precisaremos hospedar uma série de repositórios do Mercurial. Por segurança, usaremos criptografia SSL no acesso Apache e htpasswd (obrigatório). Eu testei um único repositório e usei hgwebdir.cgi e usei o hgweb.config para definir o caminho do repositório e as diretivas allow_push e deny_push , mas essa configuração de teste levou apenas a mais perguntas / problemas:
Eu não vejo nenhuma maneira de fazer um grupo diferente de permissão / negação para cada repositório separado? Mais importante ainda, não vejo nenhum método para allow_pull deny_pull - o que é muito importante, pois cada repositório tem um conjunto diferente de usuários que devem ter permissão para ler ou escrever. Gostaríamos de manter um arquivo htpasswd para todos os usuários.
O servidor Mercurial é uma ótima maneira de hospedar muitos repositórios do Mercurial com diferentes requisitos de acesso por repositório.
Se você decidir que isso não é para você, então dê uma olhada na extensão ACL para o Mercurial.
Acho que a melhor maneira de allow_pull ou deny_pull configurar a autenticação httpd usando o arquivo htpasswd. Você poderia usar qualquer um dos mecanismos mod_auth aqui para permitir que cada usuário puxe ou empurre.
Você também pode pesquisar o uso do transporte SSH para hospedagem, pois isso proporcionará um controle mais preciso sobre o acesso, ao custo de uma configuração um pouco mais complicada.
Mais informações podem ser encontradas no wiki do Mercurial .