Как настроить настройку контроля многопользовательского доступа по расширению acl в репозитории Mercurial - PullRequest
0 голосов
/ 11 ноября 2009

У меня есть основной ртутный репозиторий ( A ) с 2 папками «depot1» и «depot2» в Windows Machine

Следующая настройка выполняется в файле .hg / hgrc A repo.

[ui]
username = praveen

[extensions]
hgext.acl=

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

[acl]
sources = serve push pull commit

Затем я создал 2 клона Mercurial A хранилище. X и Y на машинах Windows

X .hg / hgrc Файл:

[ui]
username = clone1

Y .hg / hgrc Файл:

[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".

Подскажите, пожалуйста, как возможна эта конфигурация.

Спасибо

Praveen

1 Ответ

5 голосов
/ 11 ноября 2009

К сожалению, вы не понимаете, что делает username в разделе [ui]. Это строго клиентская настройка, которая говорит: «Если сервер запрашивает у меня имя пользователя для аутентификации, вот что я хочу отправить», так что то, что вы имеете в ui.username в репозиториях A, X и Y, не повлияет на что могут делать удаленные пользователи с этими репозиториями.

Вместо этого вам необходимо использовать разделы [acl.allow] и [acl.deny] в файлах .hg/hgrc репозиториев Y и X, чтобы указать для них элементы управления доступом.

Имена пользователей, которые вы используете в этих разделах ('clone1' и 'clone2') в ваших примерах, также должны быть подкреплены реальной системой аутентификации. Встроенный hg-serve не предоставляет такой возможности, поэтому вам нужно использовать ssh или Apache / ISS с hgweb или hgwebdir. См. Вики-страницу для публикации репозиториев , где представлен отличный обзор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...