fragen stichworte

Kontrolle des Klonzugriffs auf mehrere über hgwebdir.cgi bereitgestellte Repositorys

Possible Duplicate:
Read access control with Mercurial and Apache

Ich versuche, mehrere Mercurial-Repositories für meine Kunden zu hosten. Ich muss den Zugriff auf jedes Repository individuell steuern - nicht nur den Push-Zugriff, sondern auch das Klonen.

Ich habe ein .htaccess Set, das eine globale Authentifizierung erfordert:

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>

Dann habe ich in jedem Repository eine .hg/hgrc -Datei, die einen gültigen Benutzer

erfordert
[web]
allow_push = <comma seperated user list> 

Das macht fast das, was ich brauche. Das Problem ist, dass ich alle meine Clients zu hgweb.passwd hinzufügen muss, was ihnen den Klonzugriff auf alle der Repositorys ermöglicht.

Die einzige Lösung, die mir einfällt, ist, eine andere .htaccess - und .passwd -Datei in jedem -Repository zu haben. Das will ich zwar nicht wirklich, scheint etwas verworren zu sein. Ich kann bereits eine Liste der berechtigten Benutzer für jedes Repository in dieser hgrc -Datei mit der Einstellung allow_push angeben. Wenn nur eine allow_clone -Einstellung vorhanden wäre ...

Alle Dokumente, die ich für hgwebdir.cgi gefunden habe, sind unvollständig. Ich habe gelesen:

Und andere. Ich muss noch eine umfassende Liste der hgrc -Einstellungen finden.

Ich denke, das ist eine Apache-Frage wie eine Mercurial-Frage.

Wenn ich keinen besseren Ansatz finden kann, werde ich für jedes Repo eine separate .htaccess - und .passwd -Datei verwenden.

Dies ist ein virtueller Host für Webfaction, wenn es wichtig ist. Richten Sie ihn so ein, wie es in der Dokumentation beschrieben ist, die in der Dokumentation beschrieben wird.

Bearbeiten: Anscheinend werden alle .htaccess -Dateien in den Client-Repos ignoriert. Ich denke, das liegt daran, dass alle Anfragen von hgwebdir.cgi in der Webroot bearbeitet werden, sodass nur der .htaccess in der Webroot wirkt.

antworten

Ich habe die Antwort in der Manpage hgrc (5) gefunden:

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.