1

我的团队是 SVN 的新手,我认为我们犯了一个错误,每个开发人员都创建了自己的分支并开始向自己的分支添加代码。现在,我需要将所有分支合并到一个树干中。有没有安全的方法来做到这一点?我一直在努力,但是当分支中有文件时,我不断收到“树冲突”错误,而不是在树干中。大多数文件都会被添加,除了一些会产生错误的文件。

树干最初是空的,我试图一次合并一个分支。

我们使用的是 Tortoise SVN 1.7.9。

这是我们目前的结构。

projectFoo

    - branches
        - dev1
            - proj1

        - dev2
            - proj1

        - dev3
            etc...

    - trunk
        - <empty>
4

1 回答 1

2

你会玩得很开心,因为每个人都在自己的分支中工作,而分支之间没有任何关系。这不是编程意义上的合并。真正的合并意味着您将分支“A”分支“B”中拆分出来,因此这两个分支具有共同的祖先修订版,并且您现在正在从“A”合并到“B”或从“B”合并到“A”。

没有简单的方法可以完成您需要做的事情。如果幸运的话,所有开发人员都在编写单独的代码,因此合并只是意味着将分支合并在一起,并且您不会有真正的冲突。如果开发人员正在处理同一个文件,但在不同的分支中,你就有麻烦了。

--ignore-ancestors由于没有祖先,因此在合并时需要使用该参数。这是我唯一能说的。但是,一旦克服了这种痛苦,您就可以决定使用更标准的方式来处理分支和合并。有两种范式实际上很好用。(还有其他几个,但它们基本上是有毒的):

  • 不稳定的树干:我个人的最爱。每个人都在树干上工作。这是上帝设计 Subversion 工作的方式。只有在必要时才进行分支。必要时的定义有点模糊。基本上,您在需要时进行分支,因为您不希望开发人员闲置。

  • 流开发:在流开发中,您有一个集成流(通常是主干),开发人员创建 _development 流(又名分支)来完成他们的工作。开发流可能是开发人员的个人工作区、敏捷任务、Jira 问题、功能。您基本上从主干创建一个分支,完成工作,变基(也就是从主干合并到开发 支流)和 _deliver(也就是从开发流合并回主干)。

如您所见,在Unstable trunk中,一切都非常简单,因为分支很少。而且由于每个人都在主干上工作,因此他们与每个人的交流都更好,而且他们的开发工作也更小。与持续集成结合使用时效果很好。

你什么时候在不稳定的主干中分支?通常,当您开始完成一个修订版时,开发人员开始着手处理当前修订版,然后是下一个修订版。假设每个人都在开发 1.2 版。每个人都在树干上工作。当您到达一些开发人员完成 1.2 的工作并希望在 1.3 版本上工作,并且在 1.2 版本上仍有一些清理工作要做时,您从主干分支一个 1.2 版本分支。

开发 1.3 版的开发人员继续在主干上工作。开发 1.2 版本的开发人员在 1.2 分支上工作。当 1.2 i 准备好发布时,1.2 发布从 1.2 分支完成并标记在 1.2 分支上。如果需要补丁/修补程序版本 1.2.1,它也在 1.2 分支上完成。

如果在 1.2 分支上发现问题,并且在主干上的 1.3 版本上也存在问题,您可以轻松地将 1.2 上的特定更改合并回主干,因为 1.2 分支来自主干。

流开发受到敏捷人群的青睐,因为它允许您选择要包含在集成分支(又名主干)中的内容。很多时候,直到 sprint 几乎完成,软件才会交付到主干。喜欢这种方法的人喜欢它,因为它提供了灵活性,但我不喜欢它,因为这种方法不能很好地工作持续集成。另外,您通常要在发布前几天才能有一个像样的构建。

于 2012-12-05T05:14:34.310 回答