Возможный дубликат:
Контроль доступа на чтение с Mercurial и Apache
Я пытаюсь разместить несколько репозиториев Mercurial для своих клиентов. Мне нужно контролировать доступ к каждому репозиторию индивидуально - не только push-доступ, но и клонирование.
У меня есть .htaccess
набор, который требует глобальной аутентификации:
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>
Затем в каждом репозитории у меня есть .hg/hgrc
файл, требующий действующего пользователя
[web]
allow_push = <comma seperated user list>
Это почти то, что мне нужно. Проблема в том, что мне нужно добавить все мои клиенты hgweb.passwd
, что дает им клонировать доступ к все репозиториев.
Единственное решение, которое я могу придумать, - это иметь другой .htaccess
и .passwd
файл в каждый репозиторий. Я действительно не хочу этого делать, это кажется немного запутанным. Я уже могу указать список авторизованных пользователей для каждого репозитория в этих репозиториях ' hgrc
файл с allow_push
настройка. Если бы только был allow_clone
установка тоже ...
Вся документация, которую я нашел для hgwebdir.cgi
неполный. Я прочел:
И другие. Мне еще предстоит найти исчерпывающий список hgrc
настройки.
Я думаю, это скорее вопрос Apache, чем вопрос Mercurial.
Если я не смогу найти лучший подход, я буду использовать отдельный .htaccess
и .passwd
файл для каждого репо.
Если это важно, это виртуальный хост на Webfaction - примерно как описано в их документации.
Редактировать: Похоже на любой .htaccess
файлы в клиентских репозиториях будут проигнорированы. Я думаю, это потому, что все запросы обслуживаются hgwebdir.cgi
в корне сети, поэтому только .htaccess
в webroot вступает в силу.
Я нашел ответ в hgrc (5) справочная страница:
allow_read
Если пользователю еще не было отказано в доступе к репозиторию из-за содержимого
deny_read
, этот список определяет, предоставлять ли пользователю доступ к репозиторию. Если этот список не пуст, а пользователь не прошел проверку подлинности или отсутствует в списке (разделены пробелами или,
), то пользователю будет отказано в доступе. Если список пуст или не задан, то по умолчанию доступ разрешен всем пользователям. Настройкаallow_read
к особой ценности*
эквивалентно тому, что он не установлен (т.е. доступ разрешен всем пользователям). Содержаниеallow_read
список рассматривается послеdeny_read
список.