Подскажите, пожалуйста, такую штуку, можно ли в Mercurial ограничить доступ к ветке, т.е. чтобы определенные пользователи не могли ее менять? Например есть ветка Production и не хотелось бы чтобы ее менял кто попало.
Понимаю что можно сделать клон репозитория, и уже на него дать права, но хочется чтобы был только один репозиторий.
mercurial-server умеет идентифицировать пользователей по ssh-ключам (а не имени коммитера), и настраивать доступ к веткам.
Коммитить локально что угодно никто никому запретить не в силах, но push будет блокироваться.
Я же дал ссылку на сайт проекта, там более-менее внятная документация.
В Ubuntu / Debian можно поставить из пакетов, далее в /etc/mercurial-server/access.conf пишем что-то такое:
init user=root/**
deny repo=hgadmin
read user=users/username/* repo=project branch=default
write user=users/username/* repo=project
в /etc/mercurial-server/keys/users/username/key кладем ключ пользователя как в .ssh/authorized_keys
в /etc/mercurial-server/keys/root/key кладем свой ключ
делаем /usr/share/mercurial-server/refresh-auth, как в документации описано
пользователем, чей ключ положили в root, делаем hg clone . ssh://hg@your_server/project из локальной копии.
второй пользователь по тому же адресу клонирует себе, обратно залить он сможет куда угодно, кроме указанной ветки.
Как я понял помогает mercurial.selenic.com/wiki/AclExtension
А есть ли какой то еще способ, и если кто то пользовался Acl — подскажите — удобно/неудобно, какие подводные камни могут быть.