Как я могу отклонить отправку на сервер Mercurial на основе скрипта, не рискуя при этом плохой работой? - PullRequest
3 голосов
/ 11 февраля 2011

Я хотел бы написать скрипт, который проверяет входящие наборы изменений при отправке на ртутный сервер и отклоняет 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 получат доступ к этому хранилищу, они смогут видеть почти добавленные наборы изменений, как если бы они были постоянными. Это может привести к условиям гонки, если вы не предпримете шаги, чтобы их избежать . "

Я действительно не в восторге от случайной странности, которая случается, если кто-то делает попытку, пока мой сценарий отклоняет набор изменений. Есть ли другой крючок, который я могу использовать? Если нет, то какие «шаги, чтобы избежать их», которые мне нужно предпринять? Есть ли способ, которым я могу заблокировать хранилище во время моего хука?

1 Ответ

3 голосов
/ 11 февраля 2011

Если развернуть комментарии к цитируемому абзацу, Мейстер Гейслер подтвердил замечание некоторых пользователей о том, что проблема была решена начиная с hg 1.2, так что еще не постоянные входящие наборы изменений не видны, таким образомне потянет.

...