Рабочий процесс Git для двух типов продуктов с 80% сходством

У меня есть продукт двух типов с 80% базовым кодом (Community Edition и Enterprise Edition). Я немного разбираюсь в git-flow, и мне он нравится, но я не знаю, как это сделать.

Некоторые функции Enterprise Edition не должны быть включены в Community Edition, а также некоторые многоязычные файлы не должны включаться в Community Edition.

 master         
   |         
  / \
 /   \
CE   EE
|     |
tag   tag

Что я должен делать? Как управлять веткой репозитория с такой структурой?

Содержит ли корпоративная версия все, что есть в версии для сообщества (а не только каждую функцию, каждое изменение, строку кода и т. д., Если она явно не изменена для предприятия)? Или некоторые части сильно отличаются?

Lasse V. Karlsen 13.09.2018 08:55

@ LasseVågsætherKarlsen В большинстве случаев они похожи. В некоторых функциях даже нет файлов, таких как многоязычные, а в некоторых функциях есть комментарии к коду. Конечно, может быть, в 2% кода есть конфликт между CE и EE.

Ehsan Ali 13.09.2018 09:12

Я бы не стал решать эту проблему в SCM. Я бы выделил общее поведение в отдельный проект / модуль (в его собственном репозитории SCM), который наследуется либо «Редакцией».

Timothy Truckle 13.09.2018 09:36

Я согласен с @TimothyTruckle, это не подходит для SCM, это следует обрабатывать в коде или во время выполнения или, может быть, даже раньше в сборке.

phoet 13.09.2018 11:49

@TimothyTruckle @phoet @ LasseVågsætherKarlsen Могу ли я рассматривать Enterpise Edition как главную и создавать новую ветку из мастера как CE и удалять дополнительные функции в этой ветке?

Ehsan Ali 13.09.2018 12:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
35
1

Ответы 1

Вам нужно будет определить, хотите ли вы, чтобы ваш клиент видел код Community Edition или нет.

Если нет, что означает, что вы поставляете скомпилированный продукт программного обеспечения, я бы порекомендовал основную ветку со всем, что в ней, и некоторыми параметрами компиляции, чтобы включить или отключить функцию.

Если да, то если это какой-то открытый или интерпретируемый код, я бы порекомендовал git submodule с общей частью и двумя репозиториями для Enterprise Edition и Community Edition.

Другие вопросы по теме