git - 多产品生产中的 Gitflow
问题描述
我使用 git 已经有几年了,我用它来开发软件产品,如应用程序和嵌入式代码。现在我必须处理多产品生产,我可以描述如下:
- 有一个包含一些库的主核心,这些库在所有不同的产品之间共享
- 产品分为家庭
- 家庭在产品上是分开的
我必须组织 gitflow 来管理所有产品的代码。正如您可以想象的那样,每个家族都使用核心库并实现该家族所有产品所需的一些专门代码,但同时,每个产品都需要专门化部分代码以满足客户的需求。我能够专注于两种可能的解决方案,每一种都有其优缺点。
解决方案 1:repo-per-family
我可以创建一个 git 存储库,其中存储所有核心库核心,然后为每个家庭创建一个存储库。这样,我可以将核心库作为子模块导入,但是,为了区分所有产品,我应该为每个产品创建一个分支。这样的解决方案不是那么有用,因为同一家族的产品之间没有代码共享,并且分支上的每个更改都应该报告给其他分支。因此,在这个解决方案中,我将创建 n 个永远不会合并的分支。
解决方案 2:按产品回购
应该创建相同的核心库存储库,但现在我可以为“家庭代码”创建一个存储库,最后为每个特定产品创建另一个存储库。这将允许我同时处理核心代码和家庭代码,但会产生和爆炸数量的回购,这听起来不太好(对我来说)
真的我不知道如何管理这个如此多样化的代码。我尝试分析代码以了解区分每个系列产品的部分是否可以封装在一些“设置文件”中,但这不可能。我希望我足够清楚.. 非常欢迎任何帮助或建议!
提前致谢
解决方案
这有点矛盾,产品和系列不能是彼此的子集,除非它们是完全相同的东西。
Gitflow是一种分支策略,而不是真正的产品套件架构护栏。
共享库可以放在自己的存储库中。当产品使用不同的版本时,这将允许更大的可重用性并减轻任何依赖关系的噩梦。
每个产品都应该是它自己的项目空间,然后每个家庭都是它自己的仓库。如果您的“家庭”非常小,那么如果他们担任非常利基的角色,则可能值得考虑将其中的一些结合起来。
这是一个架构问题,因此您可能会在软件工程交流中得到更好的答案。
推荐阅读
- python - 地球上两个圆(给定中心和半径的坐标)的交点坐标(纬度/经度)
- react-native - 我如何将 ref 传递给 state?
- wso2 - 从自定义 DNS 访问 Wso2 Api Manager
- c++ - int &p= n; 有什么不同?int *q = &n;?
- javascript - 苹果商店 - 反应原生二进制被拒绝
- ubuntu - Plesk 安装配置 PSA 数据库
- android - 如何在android的片段uisng约束布局中动态添加editText
- android - 模拟器:撤销 Google App 的麦克风权限
- ajax - Foreach 循环遍历 cpt 类别以使用 ACF 值
- sql - 在 SQL 中使用单个联接与使用多个联接获得相同结果的性能影响