Контроль версий базы данных в GIT (бесплатно)

Всем привет, это не совсем дополнение, сколько приятная возможность для тех кто пользуется git-ом (и не только) при создании своих проектов. Все скрипты написаны на BASH и теоретически должны работать практически на любой машине в которой работает данная оболочка. Если же вы не пользуетесь гитом, ничего, Вы можете делать любые бекапы и импорты своего приложения. А теперь вздохни полной грудью и почувствуй свободу в разработке! без цепей зависимости БД )

Сразу оговорюсь, что данное решение находится в стадии разработки и больше подойдет опытным одиночкам, либо тем кто разрабатывает компоненты, ибо в серьезных проектах используются более серьезные програмульки. Поэтому относитесь к текущему проекту больше как к создателю бекапчиков. И если у вас недостаточно скилов или уверенности и понимания в том что Вы делаете, не стоит бросаться в использование компонента, потерпите когда он обрастет правками, а тема коментами.

Давайте же рассмотрим из чего состоит стандартная разработка проекта (большинство случаев):
1. Сервер на котором крутится проект и скорее всего это либо локальная машина, либо хостинг клиента текущего проекта.
2. Локальный компьютер за которым вы работаете и по традиции там же храните файлики и снимки состояний.
3. Продакшен, это то куда сливается итоговый продукт — но он может являтся и 1-м пунктом просто другой папкой.

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

Ну а для того чтобы не качать всю базу данных, которая в «расширенном» виде может занимать достаточно места, Вы можете ограничить ее различными критериями указываемыми в файле настроек. Этот же файл используется как на локальном компе так и на сервере где хранится БД. Опять же это может быть один и тот же компьютер, если вы ведете разработку локально.

A вот список того, что можно настраивать в проекте:
  • Работа с любой CMS
  • Экспорт всей БД
  • Исключение не нужных таблиц из экспорта
  • Экспорт только определенных таблиц
  • Сохранение структуры без вставки данных определенных таблиц
  • Экспорт определенных полей указанных таблиц с указанными значения по умолчанию (должно быть прописано в БД)
  • Создание отдельных групп правил в одном конфиге, что позволит делать различные бекапы по CRON-у
  • Ну и конечно же все использование всего этого одновременно в одном конфиге
Для того чтобы облегчить процесс создания дампов. Я использовал файлы — провайдеры. И настроил (пока один единственный) на modx. Он позволяет через путь к файлу конфига извлекать данные для подключения к БД, а также очищать кеш сайта в случае переключения веток. На его основе можно написать такой же провайдер для любой CMS.

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

И не стоит сразу вонять что ничего не работает, если вы не смогли разобраться в том как произвести правильную настройку и установку (в особенности если вы работаете на Windows, все же BASH это линуксовая среда).

Инструкция по установке и использованию лежит в README. Я старался сразу писать на английском, но и из-за моего любительского уровня, возможно будет не все понятно, в дальнейшем напишу на русском. Если есть желание внести правки в перевод или код, форкайте на здоровье! И если есть дельные советы — я всегда прислушиваюсь.

P.s.: если проект действительно вам пригодился, вы можете отблагодарить мою работу лайком, звездочкой на гите, либо донатом.

P.p.s: если вы дочитали до саааааамого низа, значит Вам действительно не терпится попробовать ))) тогда тыч смелее на эту ссылочку!.
Степан Прищепенко
16 апреля 2019, 00:06
6
431
+10

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

Александр Мельник
16 апреля 2019, 21:31
0
Нужно пощупать, но идея мне нравится.
Спасибо.
    Степан Прищепенко
    16 апреля 2019, 22:00
    0
    Пожалуйста, пробуйте, внес правки, теперь все безопасно даже при вводе не верных путей.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.