Gitflow多主分支管理模式

12
虽然这类似于线程 Git-flow 和 master 分支与多个平行发布分支,以及工作中使用多个主分支的最佳方式是什么?,但并不完全相同... 我发现这一个更为类似:具有相同GIT主分支的多个项目,但我想讨论我的具体用例...
我所在的公司正在建立 Git 工作流的政策和程序。我们想使用文章http://nvie.com/posts/a-successful-git-branching-model/https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow 中描述的 "Gitflow" 模型,并且在许多讨论中经常提到。
然而,我们有一个需求,我找不到解决方案的记录。如果您的项目用于生成多个最终产品怎么办?因此,master 分支不能像单个产品那样表示“发布点”。似乎需要从主分支创建其他分支?因此需要多个平行发布分支?
例如,如果项目作为某些东西的骨干或引擎,而该东西可以具有不同的外观、风味或变体,但您希望将每个完整结果的最终产品存储在一个代码库中?在我的特定情况下,我有一个在Linux服务器上运行的程序,但也以本地Windows应用程序的形式分发。在这些不同的版本中,项目中可能包含或不包含大块内容,例如,在仅为服务器的repo中,不需要包含在内的库必须在本地分发中包含,否则这些库将不存在。我想在特定发布点将repo更新到服务器上,但省略那些不属于该位置的部分。
从主分支开始,我应该创建“服务器发布”和“本地发布”分支吗?
开发分支(及其功能)应该从哪里开始?我不想有多个开发分支,每个分支都来自自己的发布版,因为代码开发实际上适用于它们两者的99%。我需要将单个dev分支合并到一个然后再合并到另一个版本中吗?
1个回答

7
如果两个产品共享99%的代码,你可以很容易地分享同一个代码库。只要两个产品在同一个发布周期内,例如版本2.0同时发布,你就可以拥有单个发布/开发/主分支。
从主分支开始,我需要创建“服务器发布”和“本地发布”分支吗?
实际上,gitflow是从develop分支创建发布分支的!但如果它们处于不同的发布周期中,你完全可以为每个产品创建一个发布分支。然后您可以自由地在它们自己的时间完成时将发布分支合并到develop和master分支中。这里唯一的问题是你可能需要在主分支上拥有两种不同的标签格式,以便你可以看到每个产品在其发布周期中的位置。或者保持标签格式相同,您可以拥有两个主分支(每个产品一个),当针对相应产品完成特性时会分别合并进去。

我同意。如果代码几乎相同,则应该只有一个存储库,并将不同的部署脚本/工具(例如ant文件)添加到此存储库中。在这里,Git-Flow 应该能够很好地工作。 - mstrap
谢谢mvd。这很有帮助。我仍在学习这个分支模型,通过查看次要来源,我显然被误导了Gitflow。相反,查看主要来源,我看到发布分支是临时的,并从develop分支中分离出来的。我曾经认为发布是一个永久的中间人,最初来自于master,然后dev从那里来。结果,我的解决方案相当混乱。我喜欢两个主分支的想法。这与我真正想表达的类似。我正在与团队讨论这个问题。如果我们实施您的计划,我会接受这个答案。 - BuvinJ
还有其他模型,其中发布分支具有长期生命周期。工作从develop开始,合并到master(一旦被认为足够稳定以进行测试),当.0标签被标记时,从master分支出一个发布分支。不要觉得你必须选择git-flow,因为它很受欢迎!您有独特的情况,在最后您应该选择最适合您公司的策略。 - mvd
有趣。我们正在尝试为所有项目建立一个标准模型。Gitflow似乎是一个很好的起点。然而,这个项目似乎不符合“标准模式”,所以我们需要进行调整,但最好尽可能少地偏离。正如你所建议的,我会尽量不被流行的标准所束缚。 - BuvinJ
这似乎不太对,最好对于子/定制产品使用相同的流程,这样您也会有其他开发和主分支。 - CME64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接