chuikoffru
@chuikoffru
Full Stack JS Developer

Как правильно вести разработку нескольких веток в git?

Добрый день. Есть проект на github - https://github.com/chuikoffru/rrbe
Есть несколько возможных сфер применения: разработка landing page, верстка e-mail писем, и создание редактируемых справок. В разных сферах нужны разные возможности этого редактора, но ядро системы остается одно.

Как организовать работу в git с этим репозиторием, и вести несколько веток: например
master - основная ветка (ядро включает в себя drag'n'drop, контекстное меню и основные хуки и возможности редактора)
web - ядро + возможности для landing page
email - ядро + возможности для писем
word - ядро + возможности для справок

Соответственно когда я что-то фиксю в ядре (по идее под каждый фикс создавать отдельную ветку на основе мастера, правильно понимаю?), мне нужно раздать это другим веткам, желательно автоматически, но можно и в ручную (вопрос как? git rebase / fetch или еще что-то, главное не затереть возможности в других ветках, а применить только исправления)

И еще, когда я пушу новую ветку в удаленную репу, github предлагает compare & pull request, но мне это как бы не нужно. Может нужно под каждую сферу применения создать отдельные репозитории? Тогда как мне организовать синхронизацию исправлений между репами?
  • Вопрос задан
  • 683 просмотра
Решения вопроса 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Это принципиально не корректная идея использования репозитория. В данном случае надо иметь отдельный репозиторий с ядром и несколько репозиториев с доп. функционалом. То есть 1 проект = 1 репозиторий.

Соединять репозитории можно либо через git modules (но мне не нравится этот способ), либо же любым удобным пакетным менеджером, например, тот же npm.

Ветки нужны только для временной разработки и последующего вливания в мастер
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsb99x
@tsb99x
Инженер-Разработчик
Можно и не разделять код из репозитория по веткам. Концептуально звучит, что это модули зависимые от ядра. В мастере будут соседствовать все 4 модуля (включая ядро). Идея в том, что ядро проекта обычно надо держать в наиболее актуальном состоянии и только путем хранения по соседству этого можно добиться без проблем.

Решение через submodules потребует создания 3-х дополнительных репозиториев, а наличие отдельных веток может мешать, так как есть возможность забывать делать merge или cherry-pick изменений из мастера с ядром.

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

Войдите, чтобы написать ответ

Похожие вопросы