#sql #database #git #drupal #version-control
#sql #База данных #git #drupal #контроль версий
Вопрос:
У меня есть сайт drupal, и я сохраняю кодовую базу в репозитории git. Кажется, это работает хорошо, но я также вношу изменения в базу данных. Я рассматриваю возможность периодического создания дампов базы данных и перехода на git. У меня было несколько вопросов по этому поводу.
-
Если я перезапишу файл, будет ли git считать, что это совершенно новый файл, или он распознает, что это измененная версия того же файла.
-
Потенциально ли это увеличит объем моего репозитория (база данных составляет 16 мб)
-
Могу ли я заархивировать этот файл? или это испортит Git… архивированная версия составляет всего 3 мб
-
Есть другие предложения?
Комментарии:
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 в любом случае выполняет собственное сжатие