2015-08-31 31 views
6

虽然这与线程Git-flow and master with multiple parallel release-branchesWhat's best way to work with git on multiple master branch?类似,但它并不完全相同......我确实发现这个很类似:Multiple projects with same GIT master,但我想讨论一下我的具体用例......带有多个主分支的Gitflow

我工作的公司正在为我们的Git工作流程建立政策和程序。我们想要使用文章http://nvie.com/posts/a-successful-git-branching-model/https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow中描述的“Gitflow”模型,并在有关此问题的许多讨论中经常参考。

然而,我们有一个使用案例,其中我找不到一个解决方案的要求。如果您的项目用于生产多个最终产品会怎样?因此,主分支不能像“单一产品”那样表示“发布点”。看来主人可能需要替代分支?那么多个并行发布分支?

例如,如果项目是骨干或引擎,可能会有不同的皮肤,味道或变体,但您希望将每个完整的最终产品存储在一个存储库中?

在我的特殊场景中,我有一个运行在Linux服务器上的程序,但它也是作为本地Windows应用程序分发的。在这些不同的版本中,项目的大块可能包含或不包含在一个或其他版本中。举例来说,如果回购仅用于服务器,则不需要包含服务器上的库,但是必须将其包含在本地分发中,否则它们不存在。我想在特定发布点将更新推送到服务器上,但省略不属于此类的那些部分。

从master分支,我会创建一个“Server Release”和“Local Release”分支吗?

开发分支(和它的功能)从哪里脱落?我不想要多个开发分支,每个分支都来自它自己的版本,因为代码开发事实上99%都适用于这两者。我是否需要将一个开发分支合并为一个,然后是另一个版本?

回答

4

如果两个产品之间共享99%的代码,则可以轻松共享同一个存储库。只要两个产品处于同一发布周期,例如2.0版同时发布,您就可以拥有一个发布/开发/主分支。

从master分支,我会创建一个“Server Release”和“Local Release”分支吗?

在gitflow中,你实际上是从开发分支发布!但是,如果它们处于不同的发布周期,则没有任何东西可以阻止您为每个产品创建发布分支。然后,当他们完成自己的时间时,您可以自由地将发布分支合并到开发和主分支中。这里唯一的问题是,您可能需要在主分支上有两种不同的标签,以便您可以看到每个产品在其发布周期中的位置。或者为了使标签保持相同的格式,您可以有两个主分支(每个产品一个),当相应产品的功能完成时,分别合并到这两个分支中。

+0

我同意。如果代码大致相同,则有一个存储库,并且只需将不同的部署脚本/工具(例如'ant'files)添加到此存储库中。 Git-Flow应该在这里工作。 – mstrap

+0

谢谢mvd。这有帮助。我仍然在学习这种分支模型,并且通过查看次要来源,我显然被误导入Gitflow。看看主要来源,我看到了发布分支是如何暂时的,而不是发展。我虽然释放了一个永久的中间人,最初来自主人,然后开发者来自那里。结果,我提出的解决方案很糟糕。我喜欢2主分支的想法。这与我的真正意思相似。我现在正在和这里的团队交谈。如果我们实施你的计划,我会除了这个答案。 – BuvinJ

+0

还有其他模式,发布分支是长寿的。工作从开发开始,并入主(一旦它被认为足够稳定以便测试),并且当.0标签被标记时发布分支从主分支分支。不要觉得你必须用git-flow去,因为它很受欢迎!你有一个独特的情况,最后你应该选择一个最适合你公司的策略。 – mvd