重新整合工作流程

问题描述:

专家专家,重新整合工作流程

一个简单的问题,从我这个老的新手到乌龟SVN。

我正在分支上工作,现在想要将分支中的更改(提交后)合并到主干。但是我不确定正确的工作流程。我应该在解决所有可能的冲突后首先将主干合并到我的工作副本中,然后将我的分支重新集成到主干?由于我的大部分同事还在假期,我无法就我的团队的这些基本知识得到任何建议。

非常感谢提前,

约翰在慕尼黑

是。

不知道给别人添加什么,你说这一切:)

值得一提的是,再集成功​​能,基本上使得您的分支无用的进一步发展,所以必须是有史以来的最后一步,分支删除前右,所以尽量避免,直到您完全确定代码已准备就绪。如果不确定,可以从分支到主干进行常规合并。为什么这个功能甚至存在是我从未能够掌握的东西;我想这是Subversion糟糕的合并跟踪的副作用。

我还建议您不要一次执行所有合并,而应尝试将它们分成更小的集合并在合并之间提交您的工作。如果您遇到合并冲突,则无法轻松解决您希望能够恢复的问题。

更新:官方版本控制使用Subversion书这样说:

在Subversion 1.5,一旦 --reintegrate合并从分支到主干完成,分公司没有 不再可用于进一步的工作。这是 不能正确吸收新的主干 的变化,也不能正确地 重新集成到主干。出于这个原因 ,如果你想保持你的 特性分支工作,我们建议 摧毁它,然后从后备箱重新创建它

http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

+0

感谢您的建议。正如我所说,我是Tortoise SVN的新手。我只是要求确认你的建议:是否应该在trunk的工作副本中完成合并分支到主干(而不是最终的重新集成)? – JohnMunich 2011-01-05 10:40:43

+0

@JohnMunich我总是这样做。有很多情况下需要对主干进行更改,以适应分支的更改(例如,更改分支中的功能签名并在主干中添加新的调用)。我发现在最终端口之前有一个功能齐全的分支可以更容易地进行测试。 – 2011-01-05 10:54:10

+0

在常规合并和重新集成的Windows对话框中,我找不到任何大的差异(我的意思是从*到*可以完全相同)。重新融合不能进行两次以上?第二次重新融入时可能会有什么问题? – JohnMunich 2011-01-05 11:21:31

首先承诺,你在你的分支中SVN所做的更改。

然后使用svn的合并功能(具有特定版本号)从您的分支合并到其他分支(或主/主干)。一旦你在本地副本'其他分支(main/trunk)'中有合并的更改(所有冲突解决),将这些更改提交回svn并完成。

+0

谢谢您的回答。我们正在使用Tortoise SVN。根据您的描述,我制定了以下工作流程:1.将更改提交给我的分支2.重新合并(合并分支到具有必要的解决冲突的主干)3.提交。看来,重新整合后(从分支合并到主干),这些更改将应用​​于主干和我的工作副本,但分支除外。我的理解是否正确? – JohnMunich 2011-01-05 10:00:40

+0

@ John,是的,如果您必须将“trunk”中的更改合并到您的分支中,则可以对分支再次执行相同的过程。 – 2011-01-05 10:05:10

+0

仍然问题:1.重新整合应该在干线的工作副本中完成吗? 2.第二次提交是否应该在主干的工作副本中完成?对于进一步的问题抱歉。 – JohnMunich 2011-01-05 10:33:27

是的,这是要走的路。

由于您可能有一个功能分支,因此您必须执行的操作在SVN redbook中进行了说明。

套用:

  1. 合并trunk到您的分支
  2. 合并你的分支到trunk使用reintegrate参数
+0

感谢您的评论。是否需要“合并主干进入你的分支”?它似乎没有在Vikram.exe的答案中得出结论。 – JohnMunich 2011-01-05 10:36:47

+0

据我所知:是的,这很重要。 Subversion会跟踪'mergeinfo'属性中分支的合并历史。它将自动由'merge'命令处理,但只包含所有必要的信息,前提是中继已经合并到分支中。 – David 2011-01-05 12:32:45