2009-11-11 5 views
0

Je principal dépôt Mercurial (A) avec 2 dossiers « depot1 » et « depot2 » dans Windows machineComment configurer plusieurs paramètre de contrôle d'accès utilisateur par extension acl dans le dépôt Mercurial

configuration suivante est faite dans. hg/hgrc fichier de Un repo.

[ui] 
username = praveen 

[extensions] 
hgext.acl= 

[hooks] 
changegroup.update = hg update 
pretxnchangegroup.acl = python:hgext.acl.hook 

[acl] 
sources = serve push pull commit 

Ensuite, j'ai créé 2 clones de Mercurial Un dépôt. X et Y sur des machines Windows

X .hg/fichier hgrc est:

[ui] 
username = clone1 

Y .hg/fichier hgrc est:

[ui] 
username = clone2 

My Question: 
1- Restrict all push operations from user="clone2". 
2- user="clone1" will be able to perform push on only "depot1". 

S'il vous plaît suggérer moi comment cette configuration est possible.

Merci,

Praveen

Répondre

5

Malheureusement, vous êtes mal compris ce que le username dans la section [ui] fait. C'est strictement un paramètre côté client qui dit "Si un serveur me demande un nom d'utilisateur pour l'authentification voici ce que je veux envoyer", donc ce que vous avez dans le ui.username en repos A, X, et Y n'aura aucun effet sur quelle télécommande les utilisateurs peuvent à/avec ces dépôts. Au lieu de cela, vous devez utiliser les sections [acl.allow] et [acl.deny] dans les fichiers .hg/hgrc des référentiels Y et X pour spécifier les contrôles d'accès correspondants.

Les noms d'utilisateur que vous utilisez dans ces sections ('clone1' et 'clone2') dans vos exemples doivent également être sauvegardés par un système d'authentification réel. Le hg-serve intégré n'en fournit pas, donc vous devez utiliser ssh ou Apache/ISS avec un hgweb ou un hgwebdir. Voir le publishing repositories wiki page pour un bon aperçu.

+0

Pouvez-vous s'il vous plaît référer toute bonne documentation sur la façon de configurer [acl.allow]/[acl.deny] et [allow_push] dans les dépôts mercurial. – praveen

+2

La page wiki AclExtension http://mercurial.selenic.com/wiki/AclExtension explique [acl.allow] et [acl.deny]. Cependant, ce que vous devez comprendre, c'est que mercurial n'a pas sa propre base de données d'utilisateurs. Il utilise le système utilisateur de votre (1) système d'exploitation, (2) ssh authorized_keys ou (3) domaine d'authentification du serveur Web HTTP. Celui qu'il utilise dépend de la façon dont vous accédez à mercurial (ssh ou http). utilisez-vous ssh: URL ou http: URL? Où créez-vous vos comptes d'utilisateurs? –

+0

J'ai une configuration mercurial sur Windows machine et actuellement en utilisant hg servir pour la publication de mon référentiel Mercurial unique. dépôts de clones (chaque utilisateur a un clone dans sa machine Windows locale) – praveen

Questions connexes