Estou tentando hospedar vários repositórios do Mercurial para meus clientes. Eu preciso controlar o acesso a cada repositório individualmente - não apenas para acessar, mas para clonar também.
Eu tenho um .htaccess
set que requer autenticação globalmente:
AuthUserFile /path/to/hgweb.passwd
AuthGroupFile /dev/null
AuthName "Chris Lawlor Client Mercurial Repositories"
AuthType Basic
<Limit GET POST PUT>
Require valid-user
</Limit>
<FilesMatch "\.(htaccess|passwd|config|bak)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Então, em cada repositório, eu tenho um arquivo .hg/hgrc
que requer um usuário válido
[web]
allow_push = <comma seperated user list>
Isso quase faz o que eu preciso. O problema é que eu preciso adicionar todos meus clientes a hgweb.passwd
, o que lhes dá acesso clone a todos dos repositórios.
A única solução que consigo pensar é ter outro arquivo .htaccess
e .passwd
no repositório each . Eu realmente não quero fazer isso, parece um pouco confuso. Já posso especificar uma lista de usuários autorizados para cada repositório nesse arquivo de repos ' hgrc
com a configuração allow_push
. Se ao menos houvesse uma configuração allow_clone
também ...
Toda a documentação que encontrei para hgwebdir.cgi
está incompleta. Eu li:
E outros. Ainda não encontrei uma lista abrangente de hgrc
configurações.
Eu acho que isso é tanto uma pergunta do Apache quanto uma pergunta do Mercurial.
A menos que eu possa encontrar uma abordagem melhor, vou usar um arquivo .htaccess
e .passwd
separado para cada repo.
Este é um host virtual da Webfaction se isso for importante - configurado de forma semelhante a descrito em sua documentação .
Editar: Parece que qualquer arquivo .htaccess
nos repositórios do cliente será ignorado. Acho que isso acontece porque todas as solicitações estão sendo atendidas por hgwebdir.cgi
no webroot, portanto, somente o .htaccess
na webroot tem efeito.