У нас есть следующие настройки: три приложения, которые похожи друг на друга с общим кодом, извлеченным в среду.Каждое приложение управляется в своем собственном git-репозитории и включает среду в виде подмодуля git.
Проблема заключается в том, что приложения теперь разрабатываются параллельно с добавлением новых функций в среду, которая не нужна другим приложениям.поддержать сразу.В настоящее время у нас есть разные ветви фреймворка для всех приложений.Одно приложение использует основную ветвь фреймворка, потому что большую часть времени в этом приложении впервые были представлены новые функции.
ветви фреймворка
- master (используется приложением A)
- appB
- appC
Когда в appB появилась новая функция, которая требовала изменений в структуре, эти изменения были внесены в ветку appB.Если эти изменения были позже необходимы в приложении A, ветвь appB была объединена с главной.Это означает, что все изменения в appB должны были быть объединены в master.
Эта система работала, но имела некоторые недостатки
- объединение функции из одной ветви в другую означало, что нам пришлось объединить всеизменения
- легко потерять отслеживание того, что уже было объединено или что будет объединено при объединении одной ветви в другую
- Маркировка разрывных изменений была сделана с помощью сообщений коммита, которые сделали последний пунктеще более важно
В настоящее время мы ищем новый рабочий процесс.Я думал о следующих ветвях
Так что дляу каждого приложения одна ветка и основная ветка, которая включает в себя все изменения.Когда разрабатываются новые функции, должна быть создана ветка функций, которая затем будет применена к мастеру, а также ко всем веткам приложений, и эта функция необходима сразу же.Другие приложения могут объединить ветвь функции, когда им потребуется эта функция позже.
Я вижу следующие проблемы с этим
- Как я могу объединить ветку функции в несколько ветвей и объединить толькоизменения, которые произошли в ветке.Я знаю о «git rebase into ...», но я не совсем уверен, смогу ли я использовать эту команду несколько раз.
- Должен ли я использовать git cherry-pick для объединения функций в несколько веток?Я бы предпочел не делать этого, потому что я могу думать, что это будет подвержено ошибкам, если не выбрать все изменения, которые были сделаны в ветви функций
- Как отслеживать, какая функция (ветвь) была применена к какойприложение.Могу ли я использовать ветку --no-merge или она будет работать только в том случае, если ветки имеют одного и того же предка?
Является ли мой заданный способ лучшим способом для достижения этой цели или мне следует полностью переосмыслить свою стратегию?