Использование ловушек Mercurial для создания / загрузки дампов базы данных для управления версиями

Я начал использовать Mercurial для управления версиями исходных файлов проекта Drupal (я новичок в VCS и Mercurial). Однако база данных по-прежнему «контролируется версиями» с использованием каталога устаревших файлов .sql.gz.

Я хочу иметь один файл дампа базы данных где-нибудь в моем репозитории, который будет перезаписан текущим дампом при изменении базы данных и импортирован в базу данных, когда я захочу вернуться к другой версии.

Я делал это вручную, и это сработало. Но что мне действительно нужно, так это то, что автоматически выгружает / загружается при каждой фиксации / обновлении. Я бы предпочел, чтобы он подключался к Mercurial, чем был чем-то внешним, например, make-файлом, который сначала сбрасывает базу данных, а затем фиксирует, поскольку мне нравится работать с инструментами TortoiseHg, и мне не хочется запускать другой скрипт.

Теперь кажется, что что-то вроде mysql .... < dumpfile.sql на крючке update было бы простым способом загружать дамп базы данных после каждого обновления. А как насчет автоматического сброса?

Был аналогичный вопрос о хуке предварительной фиксации SVN, и принятый ответ заключался в том, что это, вероятно, плохая идея. Относится ли это к Mercurial? Может, подойдет другой хук (prechangegroup?)?

РЕДАКТИРОВАТЬ:

Я должен отметить, что использую его сам на своем локальном компьютере. Он не должен масштабироваться за пределы одного пользователя.


person Eli Krupitsky    schedule 19.09.2009    source источник


Ответы (2)


Должно быть нормально сбросить базу данных с помощью ловушки pre-commit. Только будьте осторожны, чтобы не использовать хук precommit, поскольку это другое дело (выполняется внутри транзакции).

Как правило, для каждой команды (update, commit и т. Д.) Ловушка pre-<command> запускается перед выполнением команды.

person tonfa    schedule 19.09.2009
comment
Здорово! Он отлично работает через hg commit. Но ... если я использую tortoisehg, мне придется делать коммит дважды (один раз для исходных файлов и еще раз для вновь созданного дампа базы данных) ... Вы случайно не знаете, как это обойти? - person Eli Krupitsky; 20.09.2009
comment
Хм, это означает, что THG ограничивает файлы файлами, которые, по ее мнению, были изменены. Я не знаю THG достаточно хорошо, чтобы обойти это (возможно, спросите в списке рассылки THG). - person tonfa; 20.09.2009
comment
Спасибо, в любом случае. В лучшем случае я могу использовать командную строку для коммитов. Это не так плохо. - person Eli Krupitsky; 20.09.2009

Похоже, это скорее операция обновления. Я предполагаю, что вы работали с базой данных, намеренно выбрали экспорт схемы sql и сделали это. Проблема возникает, когда кто-то обновляется от вас (или из другого места), или когда вы обновляетесь от них. У Mercurial есть ловушка для обновлений.

Альтернативой могло бы быть создание вашего собственного ртутного плагина / расширения, которое может фактически связывать каталог с вашей базой данных (mysql) и потенциально предоставлять более полезную информацию. Все зависит от того, немного ли вы знаете Python.

person basszero    schedule 19.09.2009
comment
Я должен был добавить, что это простая установка для одного разработчика. Никто не будет обновляться от меня или наоборот (я добавил это сейчас). Также - я хотел бы импортировать дампы обновлений, а также ЭКСПОРТ дампа коммитов, и в этом заключается трудность (я думаю?). Что касается плагина / расширения Mercurial - я знаю некоторый Python (но не Mercurial API). Что это может дать мне такое, чего не может mysqldump / mysql? - person Eli Krupitsky; 19.09.2009