多年来,我们一直使用TFS(TFVC)作为我们的版本控制系统。我们可能会迁移到git,但我试图找出分支策略 - 维护多个版本
1)是否有比我们当前使用的更明智的分支策略/模型,特别是用于维护多个生产版本(通常用于多个不同的版本顾客)?
2)至于1),是与git超过TFVC有具体的好处?
我们今天做的其实很简单:
Mainline ----------------------------------------------------
| | | | |
Release 3 Release 4 Release 5 Release 6 "Release" 7
所有版本都对主线自己的分公司,甚至在将来的版本的开发工作已经完成的“未来”的发布分支。在上文中,“第7版”正在进行中,尚未发布。
在每个分支都可能会进一步支行等功能分支隔离工作,并随时发布分支稳定的,但我不认为这是本次讨论的重要。
每当有这些版本分支之一的变化,它最终合并主线,并从那里到所有未来版本,以避免客户从,说要去回归,3版版本5
实际上,对这些“旧”分支的更改不仅是小错误修正,还可能是第3版客户要求的更大功能,并且是在第3版中开发的,客户将收到新版本的第3版。最终,功能将被合并到主线,并从那里到所有未来的版本。
一直以来合并来自主线的每一个新的分支每一个分支发生,这实际上意味着主线主要是与最新发布分支相同。
这是第一个令人头痛的问题:从旧版本3在主线这是非常新的,然后从主线到旧版本5的合并有一些不自然的现象(事实上它会导致问题)。例如,比较版本3和版本6可能会很大并且发生变化。直接从版本3合并到版本5会更自然,但TFVC不支持这一点。您只能合并到您的直接父母(或子女)。 git是否有相同的限制?
的另一个问题是,它是不可能在TFVC樱桃挑合并整个功能,如果它的变更不是一个连续的,在历史上不间断的块。如果某些其他功能的变更集是交错的,则必须合并每个连续的子功能块变更集,或者必须合并源分支到目标分支的所有内容。而做多个樱桃挑选合并并不总是可能的,因为所有的变更集可能需要建设或单元测试,甚至是可能的。我可以看到为什么TFVC具有此限制,因为该功能的更新更改集可能基于来自另一个功能的较旧的交错更改集。因此,合并最初来自此功能的变更集可能没有意义。在实践中,我们倾向于合并准备合并的所有内容,无论如何都需要合并。 git在这方面如何比较?
什么是对我们的情况下,明智的分支策略/模型,将在迁移与git帮助我们吗?
你检查混帐流? http://nvie.com/posts/a-successful-git-branching-model/ –
是的,我已阅读,但我发现的一切似乎集中在只有一个主要释放。有人提到支持分支可能是我们需要的东西,但它看起来像一个深奥的功能,你不应该将你的修复合并回主,我不明白。人们通常如何维护多个发布分支? – pinkfloydhomer
master只是默认的分支,但它只是一个分支,它取决于你使用它。对于某些项目,我根本没有掌握,我直接按产品名称创建分支。你可以有多个发布分支。有没有[支持分支机构]的概念(https://gitversion.readthedocs.io/en/latest/git-branching-strategies/gitflow-examples/#support-branches)其高达你的流量来定义分支你的方式想。此外,当您松开,没有什么,告诉你必须从主版本中,您可以从任何一间分行发行,你可以标记针对这一分支 –