为新的精益团队提供Git分支策略

时间:2013-06-27 23:46:02

标签: git branch git-branch branching-strategy

我们有一个网络应用程序,我们有几个企业客户。我们最近决定将其作为SaaS应用程序提供,并遵循精益方法(与我们的公司产品并行)。这意味着我们在旅途中进行了可能无法投入生产的实验。

在我们精益求精之前,我们对以下分支策略感到满意(我相信它非常标准):

  • master - 始终稳定
  • dev - 经常不稳定(功能分支切断dev的新功能 进入下一个主要版本)
  • major_release_x - live(在dev合并之后切断master 进入master,这是bug修复发生的地方,并合并回master和dev)

现在我们除了上述内容之外还有以下内容,而且效果不佳:

  • lean_release_branch - live(切断major_release_x并包含 实验)
  • experiment_x - 切断major_release_x(这是我们破解的地方 功能在一起然后合并到lean_release_branch)

我们现在的情况是,我们需要快速而且经常按照精益方法的要求发布,当我们对任意事物得到可靠的反馈时,我们需要生成它并尽快释放它(从lean_release_branch开始)

问题是我们无法创建 dev 的功能分支(因为它很可能不稳定)而且我们无法创建 lean_release_branch 有两个原因:

  1. 它已被实验代码污染,因此此更改/功能无法返回
  2. lean_release_branch 始终需要准备好发布,因此如果存在需要的关键问题,我们就不能忙于对其进行测试和修复(将更改/功能合并到其中之后)修复和发布
  3. 有没有人知道我们的设置有更好的策略?

3 个答案:

答案 0 :(得分:2)

除了GitFlow nozari提到,还有GitHub Flow。我工作的地方用作基础(主人总是稳定的,在特征分支中发展,在合并之前通过审查拉取请求)。我们比GitHub更少经常部署,所以在master上我们使用annotated tags来跟踪版本,轻量级标签指向现在正在进行暂存/生产的任何提交。这由capistrano-deploytags Ruby gem管理。

除非我错误地阅读您的问题,否则您可以通过此策略实现相同的目标,并且所有这些分支的复杂性都会降低。

答案 1 :(得分:0)

我刚刚从TFS更改为GIT,我遵循的模型基于此post

关于你的实验,它只是“特色分支”,不会让它重新开发(合并到开发中)。

答案 2 :(得分:0)

因为 major_release_x 中的所有内容都已在 dev 中(因为 dev 已合并到 master 之前发布)生产功能(成功实验后)可以在 major_release_x 的功能分支上完成,称之为 production_feature_y ,然后合并到 dev ,进入下一个主要版本, lean_release_branch

这样,您的精益版本中就可以使用新的生产功能,并且将在下一个主要版本中使用,精益分支永远不需要再次合并。

有关该功能的更多客户反馈可以在 production_feature_y 上实施,并再次合并到 dev lean_release_branch

错误修复可以通过相同的方式处理,在 major_release_x 的分支上完成,并合并到 major_release_x lean_release_branch