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

Другие вопросы по тегам