使用来自单个 git 存储库的功能标志管理多个代码库

Managing multiple codebases with feature flags from a single git repository

我有一个问题,我必须从 1 个 git 存储库管理相同代码库的多个实例(除了一些配置文件)。我希望能够从 1 个主存储库的主分支推送更改(将其视为基本应用程序),然后在不同存储库的主分支上更新这些相同的更改(这是基本应用程序,有一些功能已关闭)。

这可以被认为是下图:

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

基础应用程序 git 存储库是主要的真实来源。这将允许我将错误修复和增强一直推送到连接到基本存储库的存储库。连接基础应用程序的存储库的唯一区别是某些功能被打开和关闭。配置文件用于打开和关闭功能(功能标记)。

我假设这是软件开发中一个非常普遍的问题,但是我似乎还没有找到好的解决方案。

如有任何帮助,我们将不胜感激。

我的设置方式 -

将所有三个配置文件放在同一个 repo

并控制使用环境变量选择哪个文件

支持同一代码的多个版本并对所有版本发布错误修复确实是一个常见问题。如果唯一的区别是配置,那么我会将不同的配置放在一起,并且我会添加一些机制来选择其中之一,或者在部署期间通过仅复制其中之一(例如在 RPM 规范中)或基于环境变量。

如果版本之间的变化更复杂,解决方案是使用不同的分支和一些传播机制,通过挂钩或外部工具(我使用专用 self-written monkey 处理它)。

我也可以想象一个带有 git 个子模块的解决方案。基础应用程序可能是一个 git 项目。应用程序 1 和应用程序 2 是其他 git 项目的不同分支,同时具有基础应用程序和 git 子模块。阅读网络中的子模块,例如 here