Controlando o acesso clone a múltiplos repositórios do mercurial servidos via hgwebdir.cgi [duplicate]

2

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.

    
por Chris Lawlor 24.05.2010 / 18:31

1 resposta

2

Encontrei a resposta na página do manual hgrc (5) :

allow_read

If the user has not already been denied repository access due to the contents of deny_read, this list determines whether to grant repository access to the user. If this list is not empty, and the user is unauthenticated or not present in the list (separated by whitespace or ,), then access is denied for the user. If the list is empty or not set, then access is permitted to all users by default. Setting allow_read to the special value * is equivalent to it not being set (i.e. access is permitted to all users). The contents of the allow_read list are examined after the deny_read list.

    
por 24.05.2010 / 19:25