в критическом коде, вероятно, не, потому что состояние программы должно всегда точно определяться. как Ваша база данных называют пример.
в некритическом коде, уверенном, мы делаем это также (мы просто отображаем перехваченные исключительные ситуации в окне сообщения и продолжаем бежать). возможно, плагин или модуль перестали работать, но основная программа не затронута. возможно, lexical_cast перестал работать и существует текстовый незначительный сбой, представленный на экран. Никакая потребность остановить процесс.
Должно быть нормально сбросить базу данных с помощью ловушки pre-commit
. Только будьте осторожны, чтобы не использовать ловушку precommit
, поскольку это разные вещи (выполняется внутри транзакции).
В общем, для каждой команды ( update
, commit
и т. Д.) Ловушка pre-
запускается перед выполнением команды.
Похоже, это скорее операция обновления. Я предполагаю, что вы работали с базой данных, намеренно выбрали экспорт схемы sql и сделали это. Проблема возникает, когда кто-то обновляется от вас (или из другого места) или вы обновляете от них. Mercurial имеет ловушку для обновлений.
Альтернативой может быть создание вашего собственного Mercurial плагина / расширения, которое может фактически связывать каталог с вашей базой данных (mysql) и потенциально предоставлять более полезную информацию. Все зависит от того, знаете ли вы немного Python.