Несколько проектов с одним ядром в одном Git репозтории

git-90x90 Обычно я тут пишу всякие шпаргалки всяких вещей, которые вокруг все уже знают. Но сегодня я выкладываю свою схему работы в Git репозитории. Я нигде такого не видел. Из чего я заключаю, что моя схема либо конгениальна, либо абсолютный бред. Ну есть ещё вариант, что она просто никакая =)

Поэтому, дорогие читатели. Я срочно нуждаюсь в различного рода критических комментах. Я верю что среди вас есть GIT-гуру, который быстро расставит всё по своим местам и остудит мой воспалённый мозг.

Итак

Дано
==================
Имеем некоторое ядро кода. Фактически базовая CMS под специфическую задачу. Кроме этого ядра имеем несколько сайтов построенных на этой базе.

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

Разработка ведётся параллельно и базового ядра и сайтов

Желаемый результат
==================
Хочется

  1. Транслировать изменения ядра во все дочерние проекты
  2. Изменения в дочерних проектах должны быть изолированными
  3. Хранить все изменения в Git

Как я придумал
==================

Всё-всё хранится в одном общем репозитории. Тут и базовый код и различные проекты на нём построенные. Всё это хранится в разных ветках. Изначально все ветки происходят от базовой (master), а в дальнейшем просто берут оттуда изменения.

Вот примерная схема
git scheme1

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

Понятно, что для удобства разработки могут создаваться мелкие ветки в любой из ветвей. Я просто не стал загромождать ими схему.

Минусы такой схемы
===========================
Попробую перечислить минусы такой схемы, которые я понял сам.

  1. Требуется довольно чёткое разделение, чтобы разработчик понял, нужно ли внести изменение в базовый код или в дочерний проект
  2. Скорее всего после коммита в базовый код потребуется ручной merge кода во все ветки
  3. Может ещё что-то?

Кто знает, как можно сделать лучше?

Несколько проектов с одним ядром в одном Git репозтории: 4 комментария

  1. IAD

    Посмотрите в сторону выделения ядра в отдельную репу и использования Composer.
    Получите управление версионностью ядра искоробки(откатить на предыдущий коммит) и лёгкий апдейт клиентов с помощью git pull.

  2. Уведомление: Git. Работа с удалёнными репозиториями « Блог о CMS

  3. Ден

    подскажите, какой скрипт написать, чтобы пользователи сайта могли бы размещать там свои фотографии или комментарии или статьи и.т.п

  4. altesack Автор записи

    Просто используйте WordPress. Там это есть

Комментарии запрещены.