2012-12-05 50 views
1

我的团队是SVN的新手,我认为我们犯了一个错误,每个开发者创建自己的分支并开始向他们自己的分支添加代码。现在,我需要将所有分支合并到一个主干中。有没有一种安全的方法来做到这一点?我一直在研究它,但当分支中存在文件时,我不断收到“树冲突”错误,该文件不在中继中。大部分文件将被添加,除了少数会产生错误的文件。如何在SVN中的多个开发者分支合并后创建一个主干(Tortoise SVN)

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

我们使用的是Tortoise SVN 1.7.9。

这是我们目前的结构。

projectFoo 

    - branches 
     - dev1 
      - proj1 

     - dev2 
      - proj1 

     - dev3 
      etc... 

    - trunk 
     - <empty> 

回答

2

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

有没有简单的方法来做你需要做的。如果幸运的话,所有开发人员都在开发独立的代码,所以合并只是将分支合并在一起,而不会产生真正的冲突。如果开发人员正在处理同一个文件,但在不同的分支中,则会遇到问题。

合并时需要使用--ignore-ancestors参数,因为没有祖先。这是我唯一可以说的。但是,一旦你克服了这种痛苦,你可以决定使用更加标准的方式来处理分支和合并。有两种范例 实际上很好用。 (有几个人,但他们基本上无毒):

  • 不稳定干线:我个人最喜欢的。每个人都从树干上工作。这是上帝设计Subversion工作的方式。必要时分支仅需。必要时的定义有点模糊。基本上,当你需要时你可以分支,因为你不想让开发者闲置。

  • 流发展时:物流发展,你有一个集成流(通常干线)和开发人员创建_development流(又名分支机构)做好自己的工作。开发流可能是开发人员的个人工作空间,敏捷任务,Jira问题,功能。你基本上创建了一个干线分支,完成工作,rebase(又名从主干合并到开发 分支 )和_deliver(又名从开发流合并回主干)。

正如你所看到的,在不稳定树干,一切都非常简单,因为很少有分枝回事。而且,由于每个人都是干活的,所以他们与每个人的沟通都会更好一些,而且他们会接受更小的发展。与持续集成结合使用时效果很好。

你什么时候在Unstable Trunk中分支?通常当你开始完成一个修订时,开发人员开始着手当前修订,然后开始下一个修订。假设每个人都在开发1.2版本。每个人都在干线上工作。当你到了一些开发人员完成1.2的工作并且想要在1.3版本上工作的时候,并且1.2版本中仍然有一些清理工作要做,你可以从trunk中分支一个1.2版本的分支。

在1.3版本上工作的开发人员继续在主干上工作。开发人员在1.2版本上加强了1.2版本的开发工作。当我准备发布1.2版本时,1.2版本将在1.2版本中完成,并在1.2版本上进行标记。如果需要修补程序/修补程序版本1.2.1,则它也在1.2分支上完成。

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

流发展受到敏捷人群的青睐,因为它允许您挑选并选择包含在集成分支(又名干线)中的内容。许多时候,软件在冲刺几乎完成之前不会传送到主干中。喜欢这种方法的人喜欢它,因为它提供了灵活性,但我不喜欢它,因为持续集成对此方法效果不佳。此外,通常在发布前几天才会有体面的构建。