2009-09-24 79 views
7

我正在使用功能分支,并对我的功能分支提交了一些会影响其他开发人员的更改。我想把这些新的变化提交给主干,以便没有人留下来争取修补休息时间;但是,我不想提交功能分支的其余部分,因为它尚未完全实用。SVN部分合并最佳实践

我在r109处从树干分叉。我的分支机构对r145合并的主干线进行了全部更改。我承诺我的“将影响其他开发者”更改到我的分支r152和r153。这里

我的思维过程是使用svn我的工作副本切换到躯干,然后做:

SVN合并的svn://项目/分支机构/ myBranch -r 146:153 ./project

SVN抱怨冲突,因为主干包含我更改的某个文件的原始版本,而我仅合并最新更改(我在先前提交给我的分支时对该文件进行了一些更改),并且还抱怨与另一位开发人员在r149中更改的文件发生冲突。由于我的分支只包含了从我的分支到r145的合并,因此我的分支没有反映这种变化。

没关系 - 冲突很容易解决,但我担心的是,从现在开始,当我想将我的完整分支重新集成到主干时,我会有麻烦。

或者,我可以对trunk进行必要的更改,然后将它们合并到我的分支中,但我不喜欢这种方法,因为更改已在分支中完成。没有意义做两次。

有没有人有一些功能分支部分合并到树干后经过完全重新整合的经验?这里最好的策略是什么?

回答

4

如果分支上的更改顺序无关紧要,则可以将这些更改合并回主干,然后在功能准备好重新集成时合并剩下的更改。

如果可能的话,我会避免整个情况,等待更改直到分支准备好合并。

在大多数情况下,如果是立即在树干上进行的更改,我会建议在树干上进行更改,而不是树枝,然后在树干中合并树枝到树枝通常这样做。

+0

谢谢!我将它提交给我的分支后意识到,它应该是在主干上完成的。否则,我会按照你的建议完成它。 – 2009-09-25 15:55:19

1

为了确保您保留您或其他开发人员所做的所有您希望保留的修改以及您不需要的修改,我认为您可能需要手动合并所有冲突的文件labview的LVMerge图形合并工具。我已经与乌龟SVN一起使用它良好的成功 - 在这里是如何LVMerge融入SVN,并用它来解决版本冲突的指令:

http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/136/Using-LVmerge-LabVIEW-Merge-Tool-with-TortoiseSVN.aspx

+1

该工具与乌龟合并工具有什么不同? – SeanJA 2010-04-14 13:34:53