2012-04-11 5 views
1

Я хочу ограничить некоторые пользователи от нажатия на панели изменений в ветку репозитория по умолчанию. Если это возможно, как бы вы это сделали?Ограничение пользователей от нажатия наборов изменений по умолчанию (Mercurial)

+0

Пожалуйста, предоставьте дополнительную информацию о настройке вашего сервера. – C2H5OH

+0

Мы храним наши репозитории на машине с установленным сервером Windows 2008. Версия mercurial на этой машине - 1.7.5. Все наши репозитории настроены для перехода в папку c: \ repository. Каждый пользователь имеет свой собственный клон на своих машинах. Пользователи только фиксируют на сервере, когда их работа завершена. Оттуда они должны войти в систему со своим именем пользователя и паролем, прежде чем они смогут фактически зафиксировать репозиторий. Я изучил использование [acl.deny.branches], но не имел никакой удачи в фактическом ограничении пользователей. – themaniac27

ответ

4

ACL extension должен работать на вас. Однако вам необходимо учитывать следующие соображения:

  • Расширение должно быть включено в репозиториях сервера. То есть, hgrc файл каждого обслуживаемого хранилища должны иметь настройки ACL определены:

    [extensions] 
    acl = 
    
    [hooks] 
    pretxnchangegroup.acl = python:hgext.acl.hook 
    
    [acl] 
    sources = serve 
    
    [acl.deny.branches] 
    default = user1, user2, user3 
    
  • Эти пользователи, которые имеют толчок отказывают в система пользователей. То есть имя пользователя берется из учетных данных, предоставленных веб-сервером в вашем случае. Он имеет ничего, чтобы сделать с полем Author: в метаданных совершения.

  • Вы можете разрешить или запретить заполнение chagegroups. Если один из ваших отрицаемых пользователей нажимает на группу коммитов, содержащую , один фиксирует ветвь по умолчанию, весь push будет отклонен (даже если разрешены другие коммиты). Это не так странно, если ваши пользователи часто сливаются с ветвью по умолчанию.

Вы также можете написать свой собственный крюк pretxnchangegroup, но вы не будете намного более способным, чем расширение ACL.