Pusher

Pusher

Доброй ночи!
Сейчас расскажу про довольно велосипедный вариант управления репозиториями который тем не менее имеет место быть.

В чем была проблема?

Все мы прекрасно знаем о том как нужно правильно работать с git-репозиториями, о разных подходах к созданию веток,
правильных комментариях к коммитам и прочих полезных вещах.

Но есть и другая, темная сторона Битрикс. Где правка кода и схемы БД (инфоблоки) прямо из админки это дело само собой разумеющееся.

Как решалась?

Да, существуют подходы когда несколько разработчиков работают каждый в своем окружений и при этом пользуются одной БД или варианты
с миграциями на основе диффов в дампе SQL и прочие веселые штуки. Но зачастую все сводится к тому что разворачивается сайт на тестовом
сервере и все его весело правят кому как удобнее (SSHFS/SFTP/Админ-панель).

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

Тут как нельзя кстати будет картинка про Грефа со скрамом и аджайлом

В итоге единственное спасение от случайного затирания нужных файлов это полные ежедневные бэкапы на серввере.

Но ведь их никто не будет разворачивать обратно из-за мелочи в каком-то одном сайте не правда ли?

Короче получается что нам нужно версионирование файлов без какого либо участия разработчиков в этом. И автоматический коммит раз в сутки куда лучше
чем его отсутствие =)

Как сделал?

  1. На сервере разработки у пользователя сгенерировал ssh-ключ
  2. В системе управления репозиториями (юзаем Gogs) создал отдельного юзера для автоматических репозиториев и прописал ему публичный ключ из п.1
  3. Написал велосипед на php который запустившись пробегается по массиву с указанными путями к репозиториям, делает git status –porcelain и
    в случае наличия изменений пушит все на сервер из п.2. Опционально поддерживается задание ветки, remote-репозитория и текста коммита.

Теперь я вижу сколько изменений за сутки внесли сотрудники в коде проекта и имею возможность откатить их в случае чего. Существенных минуса вижу два - не видно кто
конкретно вносил какие изменения и то что коммиты не фиксируют атомарные изменения.

В любом случае это всего лишь временная мера только для Битрикс-сайтов и я не собираюсь на ней останавливаться.