我们的分布式团队(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。如果之前已经问过这个问题,我会道歉 - 我做了搜索,却找不到我要找的东西。
答案 0 :(得分:2)
听起来你需要一个基于trunk的分支X和一个基于X的分支Y.
您可以在X中开发一个功能,并开始测试。在此期间,您将X复制到新的分支Y,并在那里开发第二个功能。
最终X被合并到trunk并被释放。然后当你完成Y的工作时,你可以将它合并回X进行测试,然后再合并到trunk中以便发布。
您可以在两个功能发布后重复此过程。下次在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中,并且在需要发布时仍然可以将每个分支的简单合并返回到主干中。