Pusher
Доброй ночи!
Сейчас расскажу про довольно велосипедный вариант управления репозиториями который тем не менее имеет место быть.
В чем была проблема?
Все мы прекрасно знаем о том как нужно правильно работать с git-репозиториями, о разных подходах к созданию веток,
правильных комментариях к коммитам и прочих полезных вещах.
Но есть и другая, темная сторона Битрикс. Где правка кода и схемы БД (инфоблоки) прямо из админки это дело само собой разумеющееся.
Как решалась?
Да, существуют подходы когда несколько разработчиков работают каждый в своем окружений и при этом пользуются одной БД или варианты
с миграциями на основе диффов в дампе SQL и прочие веселые штуки. Но зачастую все сводится к тому что разворачивается сайт на тестовом
сервере и все его весело правят кому как удобнее (SSHFS/SFTP/Админ-панель).
Как бы это не было грустно - этот подход используется. Особенно с копиями рабочих сайтов на которых нужно внести хоть и небольшие, но серьезные правки
которые потом нужно аккуратно перенести на прод.
Тут как нельзя кстати будет картинка про Грефа со скрамом и аджайлом
В итоге единственное спасение от случайного затирания нужных файлов это полные ежедневные бэкапы на серввере.
Но ведь их никто не будет разворачивать обратно из-за мелочи в каком-то одном сайте не правда ли?
Короче получается что нам нужно версионирование файлов без какого либо участия разработчиков в этом. И автоматический коммит раз в сутки куда лучше
чем его отсутствие =)
Как сделал?
- На сервере разработки у пользователя сгенерировал ssh-ключ
- В системе управления репозиториями (юзаем Gogs) создал отдельного юзера для автоматических репозиториев и прописал ему публичный ключ из п.1
- Написал велосипед на php который запустившись пробегается по массиву с указанными путями к репозиториям, делает git status –porcelain и
в случае наличия изменений пушит все на сервер из п.2. Опционально поддерживается задание ветки, remote-репозитория и текста коммита.
Теперь я вижу сколько изменений за сутки внесли сотрудники в коде проекта и имею возможность откатить их в случае чего. Существенных минуса вижу два - не видно кто
конкретно вносил какие изменения и то что коммиты не фиксируют атомарные изменения.
В любом случае это всего лишь временная мера только для Битрикс-сайтов и я не собираюсь на ней останавливаться.