Хук Mercurial для проверки правильности имени пользователя при отправке в хранилище - PullRequest
3 голосов
/ 15 апреля 2011

У меня есть «центральный» репозиторий, в котором я хочу убедиться, что никто не вводит изменения с неправильным именем пользователя.

Но я не могу понять, как создать хук, который проверяет имя пользователяпротив положительного списка.В Mercurial API я обнаружил вызов

ctx.user()
, который, как мне кажется, должен проверить мой положительный список.

Также ловушка может быть ловушкой предварительной передачи, которая распространяется как часть клона репозитория илиэто может быть зацепка за центральный репозиторий как входящий или что-то в этом роде.

Любая помощь или указатели будут с благодарностью.

Ответы [ 2 ]

4 голосов
/ 16 апреля 2011

Я разместил два функциональных примера на Bitbucket.Оба примера предназначены для поиска в сообщении фиксации какого-либо специально отформатированного текста (например, идентификатора отслеживаемого случая), но его можно легко изменить, чтобы проверить пользователя по списку действительных пользователей.

Первый пример на самом деле представляет собой расширение Mercurial , заключающее в себе команду 'commit'.Если ему не удастся найти соответствующий текст (или действительного пользователя в вашем случае), это вообще предотвратит коммит.Вы можете включить это в своем файле .hgrc, добавив следующие строки:

[extensions]
someName = path/to/script/commit-msg-check.py

Во втором примере используется обработчик pretxncommit внутри процесса, который запускается между моментом принятия коммита,но прежде чем оно станет постоянным.Если эта проверка не пройдена, она автоматически откатит фиксацию.Вы можете включить это в своем файле .hgrc, добавив следующие строки (при условии, что вы сохранили те же имена файлов / функций):

[hooks]
pretxncommit.example = python:commit-msg-check-hook.CheckForIssueRecord

Вы можете выполнить любой код Python, который вам нравится, внутри этих хуков, поэтому проверка пользователяможно сделать разными способами.

1 голос
/ 26 апреля 2011

Спасибо за примеры dls.

В конце я решил запустить его как pretxnchangegroup ловушку, а затем использовать hg log и grep для проверки поля автора коммитов:

[hooks]
pretxnchangegroup.usercheck = hg log --template '{author}\n' -r \ 
$HG_NODE: | grep -qe 'user1\|user2\|etc'

Это, конечно, не обеспечивает очень хорошую обратную связь, кроме проверки пользователя.Но я думаю, что пока это достаточно хорошо.

...