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

StackOverflow https://stackoverflow.com/questions/1449177

Вопрос

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

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

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

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

Там был один похожий вопрос о крючке предварительной фиксации SVN, и общепринятым ответом было то, что это, вероятно, плохая идея.Применимо ли это к Mercurial?Может быть, еще один крюк (prechangegroup?) сработало бы?

Редактировать:

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

Это было полезно?

Решение

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

В общем, для каждой команды (update, commit, и т.д.) тот pre-<command> перехват выполняется перед выполнением команды.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top