Mercurial - заблокировать доступ к ветке с помощью расширения ACL в Windows - PullRequest
3 голосов
/ 03 ноября 2010

Я пытаюсь запретить всем фиксировать доступ к ветке с помощью ACL в Windows, но, похоже, не могу понять это. Согласно небольшой документации, которую я нашел, это должно работать.

Мой файл hgrc:

[extensions]
hgext.acl=

[hooks]
pretxncommit.acl = python:hgext.acl.hook

[acl]
sources = commit

[acl.deny.branches] 
default = *

Разве это не должно запретить всем фиксировать доступ к ветке по умолчанию? Я пробовал и теперь каждый коммит, независимо от того, дают ветку:

error: pretxncommit.acl hook failed: config error - hook type "pretxncommit" can
not stop incoming changesets
transaction abort!
rollback completed
abort: config error - hook type "pretxncommit" cannot stop incoming changesets

Приводит меня к мысли, что я настроил это неправильно, но именно так они и делают в документации AclExtension .

1 Ответ

2 голосов
/ 03 ноября 2010

Вот соответствующий код из acl.py:

if hooktype not in ['pretxnchangegroup', 'pretxncommit']:
    raise util.Abort(_('config error - hook type "%s" cannot stop '
                       'incoming changesets nor commits') % hooktype)

, который, я думаю, проверяет после того, как ".acl" из вашего имени ловушки удалено, но, возможно, в вашей версии mercurial (какая версия?) это не так?

Попробуйте изменить раздел [hooks] следующим образом:

[hooks]
pretxncommit = python:hgext.acl.hook

.acl необходим только при наличии нескольких хуков одного типа.

...