Хранение Drupal SQL в Git

#sql #database #git #drupal #version-control

#sql #База данных #git #drupal #контроль версий

Вопрос:

У меня есть сайт drupal, и я сохраняю кодовую базу в репозитории git. Кажется, это работает хорошо, но я также вношу изменения в базу данных. Я рассматриваю возможность периодического создания дампов базы данных и перехода на git. У меня было несколько вопросов по этому поводу.

  1. Если я перезапишу файл, будет ли git считать, что это совершенно новый файл, или он распознает, что это измененная версия того же файла.

  2. Потенциально ли это увеличит объем моего репозитория (база данных составляет 16 мб)

  3. Могу ли я заархивировать этот файл? или это испортит Git… архивированная версия составляет всего 3 мб

  4. Есть другие предложения?

Комментарии:

1. Возможно, вы захотите проверить сайт бета-тестирования Drupal Answers. Чем больше людей его используют, тем больше у него шансов пройти бета-тестирование: drupal.stackexchange.com

Ответ №1:

Если у вас достаточно места, несжатый дамп в системе управления версиями довольно удобен, потому что вы можете сравнить с помощью программы diff, какие строки были добавлены / изменены / удалены.

Комментарии:

1. Просто в качестве обновления — я попробовал это, добавив дамп sql в git (перезаписав тот же файл), а затем зафиксировав новый файл. Похоже, что это не сильно увеличило размер .git, поэтому я предполагаю, что он действительно видит изменения… Однако я не думаю, что это сработало бы, если бы дамп был заархивирован

Ответ №2:

Другим решением является использование модуля features, который должен фиксировать конфигурацию drupal в коде. Он хранит эти захваченные данные в виде функционального модуля, который вы можете поместить в систему управления версиями.

Ответ №3:

Для моих приложений баз данных я храню сценарии инструкций DDL (например CREATE TABLE ) в какой-то системе контроля версий. Эти скрипты иногда также включают статические «исходные» данные. Все системы контроля версий, которые я использую, хорошо распознают различия в этих файлах, и они намного меньше, чем полная база данных с данными.

Для динамически генерируемых данных я храню резервные копии (например, из mysqldump ) в соответствующем месте (в зависимости от важности данных, которые могут включать резервные копии вне сайта).

Комментарии:

1. «Для динамически генерируемых данных я храню резервные копии (например, из mysqldump) в соответствующем месте (в зависимости от важности данных, которые могут включать резервные копии вне сайта).» … означает ли это, что вы делаете несколько снимков данных и сохраняете их все или перезаписываете один и тот же файл и используете Git для их версии?

2. Он имел в виду: «дамп всегда находится в одном и том же файле, или вы каждый раз создаете новый файл в папке?».

3. Просто в качестве обновления — я попробовал это, добавив дамп sql в git (перезаписав тот же файл), а затем зафиксировав новый файл. Похоже, что это не сильно увеличило размер .git, поэтому я предполагаю, что он действительно видит изменения… Однако я не думаю, что это сработало бы, если бы дамп был заархивирован

4. @wild он отредактировал свой комментарий после того, как я ответил. Я храню несколько файлов дампа и удаляю те, которые «достаточно старые», чтобы о них больше не заботиться (возраст зависит от приложения).

Ответ №4:

1) Это весь текст, поэтому GIT просто увидит его, как и любой другой файл.

2) Нет, из-за вышесказанного он должен добавить 16 мб к репозиторию (или меньше, из-за собственного сжатия GITs), он не будет добавлять новый файл каждый раз, только изменения, поэтому репозиторий будет меняться на размер добавлений в репозиторий

3) Нет, иначе GIT не сможет увидеть различия — GIT в любом случае выполняет собственное сжатие