Как реализовать автоматический коммит и пуш в удаленный репозиторий используя базовые утилиты Ubuntu? Как корректно обработать отсутствие изменений?
Данный репозиторий планируется использовать для архивного хранения изменений на сайте без cms.
У нас уже нормально используется git для хранения кода, но вот сейчас задумались о том, чтобы хранить сайт без cms в git. Это даже скорее архивное хранение. Ну и "отчетность" о том, что и когда меняли
Ответ
По моему личному мнению, всё нужно делать ровно наоборот.
Вы меняете сайт напрямую и хотите сохранять изменения постфактум.
В результате у вас будет только информация о том, в какой день изменилась та или иная строка, но никакой информации о точном времени и авторе изменения. А когда нет информации об авторе, нет и ответственности.
А ещё изменения, внесённые в течение дня, не будут иметь бэкапа.
Изменения также не будут иметь осмысленного комментария. Зачем что-то поменяли или добавили? Через неделю уже никто не вспомнит.
Считайте, что вы купите абонемент на факапы. Другими словами, технически ваша задача решается очень легко (cron + git), но эта задача не приблизит вас к цели - бэкапам и отчетности об изменениях.
Гораздо более надёжный способ - проводить все изменения сразу и исключительно через git, разворачивая боевое окружение из определённой ветки (обычно master или production). Способов разворачивать сайт из git множество и они за рамками этого вопроса.
Суть вот в чём: если кто-то захотел поменять хоть даже одну строку - делает коммит в ветку, из которой разворачивается сайт. Если этот коммит всё сломал - откатываемся на прошлый и делаем выводы.
Очень хорошо и надёжно будет использовать тестовое окружение, чтобы не выкатывать сразу на бой. В таком случае вы либо разворачиваете сайт на тестовое окружение из каждой feature-ветки, или из какой-то одной, в которую мержатся feature-ветки. Довольно распространённая практика: master разворачивается на stage, production разворачивается на бой.
Про развертывание сайтов из git:
Не самые современные методы: Настройка и развертывание проекта c помощью Git
Вполне современный метод: (Habr) GitLab CI: Учимся деплоить
Using Git to manage a web site
How To Set Up Automatic Deployment with Git with a VPS
Про модель работы и релизы (каждое изменение на бою - это релиз, хоть и небольшой)
Как правильно отправить релиз на git?
Комментариев нет:
Отправить комментарий