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