我正在开发一个功能分支,并对我的功能分支进行了一些更改,这些更改将影响其他开发人员。我想将这些新的更改提交到主干,这样就没有人会争先恐后地解决这个问题。但是,我不想提交功能分支的其余部分,因为它尚未完全正常运行。
我在r109分叉了行李箱。我的分支已经对r145中的主干进行了所有更改。我在r152和r153中将我的“将影响其他开发人员”更改为我的分支。
我在这里的思考过程是将我的工作副本切换到主干然后执行:
svn merge svn:// project / branch / myBranch -r 146:153 ./project
SVN抱怨冲突,因为trunk包含我更改的其中一个文件的原始版本,而我只是合并了最新的更改(我在之前的分支提交中对该文件进行了一些更改),以及它还抱怨与r149中另一个开发人员更改的文件发生冲突。由于我的分支在我提交之前只包含从主干到r145的合并,我的分支并没有反映出这种变化。
没关系 - 冲突很容易解决,但我担心的是,从现在开始,当我想将完整的分支重新整合到主干中时,我将遇到麻烦。
或者,我可以对主干进行必要的更改,然后将它们合并到我的分支中,但我不喜欢这种方法,因为更改已在分支中完成。做两次没有意义。
是否有人有部分合并功能分支到主干然后完全重新集成的经验?什么是最好的策略?
答案 0 :(得分:4)
如果分支上的更改顺序无关紧要,您可以将这些更改合并回主干,然后在功能准备好重新集成时合并其余部分。
如果可能的话,我会通过等待更改直到分支准备好合并来避免整个情况。
在大多数情况下,如果它是应该立即在主干上进行的更改,我建议在 trunk 上进行更改,而不是在分支上进行更改,然后从主干到像往常那样分支。
答案 1 :(得分:1)
为了确保您保留您或其他开发人员想要保留的所有修改以及您不想要的任何修改,我认为您可能需要使用labview手动合并所有冲突的文件LVMerge图形合并工具。我与Tortoise SVN一起使用它取得了很好的成功 - 这里有关于如何将LVMerge集成到SVN并使用它来解决版本冲突的说明: