5

分支之间父子关系的方向重要吗?父/子是否只是一个抽象概念,用于识别哪个是源哪个是目的地,或者是否存在只能在一个方向上执行的特定操作,因此,关系的方向很重要?

这里有一些背景信息来解释这个问题的原因..

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

Dev -------------------------------
          \
      Main >-----------------------
                  \
        Production >---------------

这似乎对我们有用,但我阅读的所有推荐指南都建议 Main 应该是根。因此,它应该看起来像这样:

      Dev  >-----------------------
          /
Main ------------------------------
                  \
        Production >---------------

这非常相似,但显然 Main 和 Dev 之间的父子关系是颠倒的。

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

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

4

2 回答 2

7

短期:短期内告诉大家将 DEV 视为 MAIN 的子级,即使它在 TFS 中看起来像父级。

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

其他想法

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

MAIN(又名 Root 或 Trunk 或 Ancestor 分支): 您可以任意指定任何分支为“Main”、“root”、“trunk”等分支。请记住,这些术语通常可以互换使用,特别是对于从不同公司雇用的新开发人员。只要每个进行合并和分支的人都知道您将 MAIN 分支视为团队的根/主干分支,那么您就可以了。如果你随便要求某人从根分支上发布一个新版本并且他们决定 root=DEV 分支,那么你就有问题了(即使你的分支图清楚地支持“根”分支是 DEV 的想法)。

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

(如果您已经在团队中使用了其他术语,例如“合并”和“合并”,那没关系......只要包括新员工在内的每个人都清楚地理解这些术语的含义。(另请注意“向上”和“ down”的分支机构在不同的公司中以不同的方式绘制,因此该术语可能会引起混淆。)

新分支: 如果您的团队决定从 MAIN 创建一个新的 DEV_FeatureX 分支,那么它将是一个子分支。(TFS 强制每个分支只有一个父级......您目前不能是两个母亲所生的孩子:-)。)同样,如果您按版本分支(现在或以后),这些分支将是 MAIN 分支的新子级. 随着时间的推移,这将

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

于 2012-04-26T20:18:01.567 回答
1

方向与分支无关。一个给定的分支可以“基于”另一个分支,然后创建关系,但您可以从任一方向合并完全相同的好处。

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

让我们来看看你的第一个图表,其中 Production 来自 Main,而 Main 来自 Dev:

  • 您将能够有效地从 Dev 合并到 Main、Main 到 Dev、Main 到 Prod 以及 Prod 到 Main。
  • 但是从 Dev 合并到 Prod 或从 Prod 合并到 Dev 将是一个真正的痛苦。

为什么 ?因为当源分支和目标分支直接相关时,您将受益于三向合并。如果源分支和目标分支是间接相关的(例如 Dev 和 Prod),那么 TFS 只能进行双向合并,这会导致更多的冲突。

如果您想了解有关三向合并的更多信息,请参阅维基百科链接

总结一下:两张图在 TFS 方面是相同的,这完全取决于您选择哪种分支模型。

于 2012-04-25T13:09:59.603 回答