Управление несколькими базами кода с помощью флагов функций из одного репозитория git - PullRequest
1 голос
/ 06 августа 2020

У меня проблема, в которой мне нужно управлять несколькими экземплярами одной и той же базы кода (помимо некоторых файлов конфигурации) из репозитория 1 git. Я хотел бы иметь возможность вносить изменения pu sh из основной ветки 1 основного репозитория (думайте об этом как о базовом приложении), а затем обновляйте эти же изменения в основной ветке другого репозитория (который является базовым приложением , с отключенными некоторыми функциями).

Это можно представить как приведенную ниже биграмму:

/BASE APPLICATION
--/BASE APPLICATION (1 feature turned off)
--/BASE APPLICATION (2 features turned off)

Репозиторий git базового приложения является основным источником истины. Это позволило бы мне исправлять ошибки и улучшения pu sh вплоть до репозиториев, подключенных к базовому репозиторию. Единственное отличие репозиториев, к которым подключено базовое приложение, заключается в том, что некоторые функции включаются и выключаются. Файлы конфигурации используются для включения и выключения функций (отметка функций).

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

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Поддержка многих версий одного и того же кода и выпуск исправлений ошибок для всех из них действительно является распространенной проблемой. Если единственное различие заключается в конфигурации, я бы сохранил разные конфигурации вместе и добавил бы какой-то механизм для выбора одного из них, либо во время развертывания путем копирования только одного из них (например, в RPM spe c), либо на основе переменной среды.

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

Я также могу представить решение с git подмодулями . Базовым приложением может быть один проект git. Приложение 1 и Applicatin 2 являются разными ветвями другого проекта git, имеющего как базовое приложение, так и подмодуль git. Прочтите о подмодулях в сети, например здесь

0 голосов
/ 06 августа 2020

так, как я бы это настроил -

иметь все три файла конфигурации в одном репо

и контролировать, какой файл выбирается с помощью переменной среды

...