SVN工作流程 - 鸡蛋在鸡蛋之前 - 在将V1与V2合并之前,我需要V1的代码才能在V2上工作

时间:2010-05-13 00:33:20

标签: svn branch merge branching-and-merging

我们的分布式团队(3个内部开发人员和3个以上的外部开发人员)使用SVN来管理我们的网站代码库。我们为每个次要版本(4.1.0,4.1.1,4.1.2等)都有一个分支。我们有一个主干,我们在发布时将每个版本合并到我们的网站上。

我们遇到的问题的一个例子是: 添加了一个新功能,我们将其称为“创建项目的能力”到4.1.1。 另一个依赖于4.1.1中的功能的功能计划在4.1.2中进行,称为“能够向项目添加任务”。

因此,在周一,我们说4.1.1已经“关闭”,需要进行测试。我们的远程开发人员通常会在此时开始处理4.1.2的功能/票证。在整个星期,我们将测试4.1.1并修复任何错误并将它们提交回4.1.1。然后,在星期五左右,我们将标记4.1.1,将其与trunk合并,最后,将其与4.1.2合并。但是,在我们测试的4-5天内,4.1.2没有4.1.1的代码,4.1.2的一些新功能依赖于它。

因此,添加“能够向项目添加任务”功能的开发人员没有“能够创建项目”功能来构建,并且必须执行一些文件复制恶作剧才能保留正在努力。

我们可以/应该做些什么来平滑这个过程?

  

P.S。如果之前已经问过这个问题,我会道歉 - 我做了搜索,却找不到我要找的东西。

5 个答案:

答案 0 :(得分:2)

听起来你需要一个基于trunk的分支X和一个基于X的分支Y.

您可以在X中开发一个功能,并开始测试。在此期间,您将X复制到新的分支Y,并在那里开发第二个功能。

最终X被合并到trunk并被释放。然后当你完成Y的工作时,你可以将它合并回X进行测试,然后再合并到trunk中以便发布。

您可以在两个功能发布后重复此过程。下次在X中完成一个功能,并且想要在它上构建时,只需将其合并回Y.

如果你这样做,重要的是要记住:

  • 您可以从主干到X进行正常合并,从X进入Y.
  • 您确实将X中的合并重新集成到主干中,然后从Y重新集成到X中。
  • 重新整合到主干之后,您需要将block the commit合并回X.
  • 重新整合到X后,您需要阻止提交合并回Y.
  • 详细说明哪个分支在哪个分支中;否则这可能会很快混淆。

答案 1 :(得分:1)

我们这样做的方式是所有开发都发生在trunk中。您甚至只提交到trunk,然后4.1.1所需的任何修复都将 trunk 合并到 4.1.1分支。 4.1.2的分支仅在4.1.2开始测试时创建 - 一旦4.1.2分支完成,工作继续在主干中,如果4.1.2需要修复,它们在主干中制作然后合并到4.1.2。

我们在一个需要将 back 合并到trunk(或其他地方,真的)的分支中进行更改是非常罕见的。

答案 2 :(得分:1)

除非有理由将它们放在其他地方,否则我会让所有新提交进入主干。例如,通过为4.1.1和4.1.2创建不同的分支,最好通过分支之间的合并来处理您的示例,然后这两个分支可能会合并回主干。呸!在我看来,这就是mergeinfo地狱。

以下是Subversion书中的一些基本建议:

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html

答案 3 :(得分:0)

我想有几种方法可以做到。

但我练习后备箱总是稳定的。 没有未完成的 - 不稳定的代码应该进入主干。如果要添加一个新功能并且需要几天甚至几周,那么我会为它创建一个分支。完成后,分支似乎稳定并经过测试,它会再次合并到主干中,并删除分支。

这样行李箱将保持稳定。实验代码永远是我的分支。

如果我出于某种原因改变主意并跳过半完成的项目,我不必考虑行李箱。我只是删除分支......

答案 4 :(得分:0)

一种方法是从4.1.1而不是从主干(当然4.1.1从主干)分支4.1.2。

然后,您可以轻松地将4.1.1定期合并到4.1.2中,并且在需要发布时仍然可以将每个分支的简单合并返回到主干中。