Как я могу отклонить push-запросы к серверу Mercurial на основе скрипта, не рискуя при этом неудачей?
Я хотел бы написать скрипт, который проверяет входящие наборы изменений при отправке на сервер Mercurial и отклоняет push, если наборы изменений не соответствуют определенному стандарту. Похоже, мои варианты prechangegroup
, pre-changegroup
, а также pretxnchangegroup
крючки. К сожалению, prechangegroup
а также pre-changegroup
хуки, похоже, не имеют доступа к входящим наборам изменений, поэтому мне нужно pretxnchangegroup
, Но согласно документации на http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html, это может привести к несогласованному состоянию для людей, использующих хранилище, в то время как крюк выполняет:
"Пока эта ловушка работает, если другие процессы Mercurial получат доступ к этому хранилищу, они смогут видеть почти добавленные наборы изменений, как если бы они были постоянными. Это может привести к условиям гонки, если вы не предпримете шаги, чтобы их избежать".
Я действительно не в восторге от случайной странности, которая случается, если кто-то делает попытку, пока мой сценарий отклоняет набор изменений. Есть ли другой крючок, который я могу использовать? Если нет, то какие "шаги, чтобы избежать их" мне нужно предпринять? Есть ли способ, которым я могу заблокировать хранилище во время моего хука?
1 ответ
Если вы расширите комментарии к цитируемому абзацу, Martin Geisler подтвердил замечание некоторых пользователей о том, что проблема была решена начиная с hg 1.2, так что еще не постоянные входящие наборы изменений не видны, поэтому не будут извлечены.