在TFS中是分支的方向';母亲的亲子关系很重要

在TFS中是分支的方向';母亲的亲子关系很重要,tfs,branching-and-merging,Tfs,Branching And Merging,分支之间父子关系的方向是否重要? 父/子仅仅是一个抽象概念,用于确定哪个是源,哪个是目标,还是存在只能在一个方向上执行的特定操作,从而使关系的方向变得重要 下面是一些背景资料来解释这个问题的原因 我们最近实施了一项新的分支策略,并决定采用以下简单设置: Dev ------------------------------- \ Main >----------------------- \ Producti

分支之间父子关系的方向是否重要? 父/子仅仅是一个抽象概念,用于确定哪个是源,哪个是目标,还是存在只能在一个方向上执行的特定操作,从而使关系的方向变得重要

下面是一些背景资料来解释这个问题的原因

我们最近实施了一项新的分支策略,并决定采用以下简单设置:

Dev -------------------------------
          \
      Main >-----------------------
                  \
        Production >---------------
这似乎对我们有用,但我读到的所有推荐指南都表明,Main应该是根。所以它应该是这样的:

      Dev  >-----------------------
          /
Main ------------------------------
                  \
        Production >---------------
这非常相似,但很明显,Main和Dev之间的父子关系是相反的

如果我们将Dev作为根,将Main作为它的子级,那么会给自己带来什么问题?我能看到的唯一问题是,如果我们从main上取下第二个Dev分支。。它与Main的父子关系与另一个Dev分支相反,但我再次问,这有什么意义


谢谢您的关注,如果您需要更多信息,请告诉我。

分支机构的方向并不重要。一个给定的分支可以“基于”另一个分支,然后创建一个关系,但您可以从两个方向合并完全相同的好处

唯一的区别是在其他地方,这是一个很大的区别

让我们来看第一张图,其中生产基于Main,而生产基于Dev:

  • 您将能够高效地从Dev合并到Main,从Main合并到Dev,从Main合并到Prod,从Prod合并到Main
  • 但是从开发人员到产品或产品到开发人员的合并将是一个真正的痛苦
为什么??因为当源分支和目标分支直接相关时,三方合并会给您带来好处。如果源分支和目标分支是间接相关的(例如Dev和Prod),那么TFS only将能够进行双向合并,这将导致更多的冲突

如果你想了解更多关于三方合并的信息,这里是


总而言之:两个图在TFS方面是相同的,这完全取决于您选择哪个分支模型。

短期:短期告诉大家,要把DEV看作MAIN的子级,即使它看起来像TFS中的父级

注意:您可以在TFS中重新租用DEV分支。。。如果您认为特定团队的概念术语和流程风险将大于纠正TFS分支结构的风险,则可能应该这样做

其他想法 我将重复分支方向在技术上对TFS不重要。但是要非常小心那些更容易被混淆的人。重要的是,在分支机构之间进行合并(或创建新分支机构)的每个人都清楚地了解分支机构的层次结构,并遵循集团的官方术语和分支机构/合并流程

MAIN(又名根或主干或祖先分支): 您可以任意将任何分支指定为“主”、“根”、“主干”等分支。请记住,这些术语通常可以互换使用,特别是对于从不同公司雇用的新开发人员。只要进行合并和分支的每个人都知道您将主分支视为团队的根/主干分支,那么您就可以了。如果您随意要求某人对根分支进行新的发布,而他们决定root=DEV branch,那么您就有问题了(即使您的分支图明确支持“根”分支是DEV的观点)

合并方向: FI(从父级到子级的正向积分)和RI(从子级到父级的反向积分)是用于描述合并方向的最常用术语。我订阅FIRI(“Fiery”)合并模式,以确保在RI合并到父级之前,父级中的所有更改都被FI合并到子级(解决所有冲突并根据需要进行测试)。这确实有助于保持父分支比子分支更稳定。这个想法对您的问题很重要,因为当前FI表示从DEV(父级)到MAIN(子级)。如果您和所有分支/合并人员都可以假装DEV是一个子分支,那么您可以说“在合并到主分支之前您做过FI吗?”。同样,您团队的分支/合并公会可以明确声明“重要:在本指南(以及一般讨论)中,始终将开发分支视为MAIN的子级,即使技术上是TFS中的父级(截至2012年4月25日)。” 然后,在讨论开发分支时,所有语句都可以使用标准术语,而不必经常使用反向术语

(如果您在团队中已经使用了其他术语,如“向上合并”和“向下合并”,这是可以的……只要包括新员工在内的每个人都清楚地理解这些术语的含义。(还要注意,“向上”和“向下”分支机构在不同的公司有不同的划分,因此此术语可能会引起混淆。)

新分支机构: 如果您的团队决定从MAIN创建一个新的DEV_FeatureX分支,那么它将是一个子分支。(TFS强制每个分支只有一个父级…您当前不能是两个母亲所生的子级:-))。同样,如果您通过发布(现在或以后)进行分支,这些分支将是主分支的新子级。随着时间的推移,这将

记住,计算机犯错误的频率远远低于人类。
享受吧-泽潘

感谢您的回复。。我不确定我是否理解你所解释的问题。在这两个例子中,Dev和Prod从来没有直接关系。那么,将Main作为根目录有什么帮助呢?因为这不会改变Dev和Prod的关系。。当将变更从开发转移到生产(或反之亦然)时,这将涉及2个合并,作为中间合并通过Main。当然是两个