我们在SVN中有不同的分支,并在分支之间进行SVN合并。每个分支几乎都是相互关联的,因为我们的代码是增量的。假设有大约5个分支(分支1,分支2等....)分支X在某个时间点合并到分支Y,两个分支也有自己的代码开发:
- 分支1 =代码库A(来自生产中的先前分支)
- 分支2 =代码库A +自己对代码库A的更改
现在如果分支3也有分支1的代码库和它自己的更改,即(代码库A +分支1更改+分支3更改)。分支4(从分支1创建,也有自己的更改)
- A)现在我如何将分支2合并到分支3避免代码冗余和合并问题。
- B)此外,我想将分支3合并到分支4中,并保持分支3的更改。
现在我面临的问题,特别是删除代码和重复代码在同一个文件。
中所面对的问题
非冲突状态的文件有时会在文件中获得两次代码内容。
分支3和分支4的情况
在分支3中删除的代码在分支4中又可以看到虽然合并是通过前向方式完成的(branch1 -> branch2-> branch3 -> branch4)
我们试着每次都保持相同的基地,但仍然遇到上述问题。我想了解合并应该如何在上述场景中完成。请提出你的意见。任何有svn merge实践知识的人都会很有帮助。
PS:我已经学习了合并最佳实践,但现在得到了明确的方法。我知道基本的归并方法但是从来没有在像这样复杂的情况下进行过归并
您需要考虑分支策略。看起来有点复杂。这四个分支代表什么?它们是你要添加的特殊功能吗?为什么会出现周期性合并?
我们指定一个分支(分支1)作为您的集成流。这是所有工作的地方。这是释放的地方。分支2、分支3和分支4将是特征分支。添加功能的分支。在这种情况下,所有合并将在分支1和其他分支之间进行。你不能在任何其他分支之间合并代码。
分支被比作生孩子。如果你有一个,你最好准备好好好照顾它。你必须观察它并保持它。
这是我尽量保持分支最小化的原因之一。我们所有的工作都是在主干上完成的,我在发布时间临近的时候进行分支,以便让一些开发人员完成即将发布的版本,而其他开发人员则致力于未来的修订。一旦发布完成,我们对该分支说"au revoir"(除非我们需要打补丁)。
偶尔,我会创建一个特性分支。这是比较棘手的,因为我们必须保持特性分支与主干同步。这并不难做到,但开发者必须记得定期这样做。否则,我们都要在主干上工作。
其他站点一直使用功能分支,但必须记住将它们的集成分支(或主干)合并到这些分支中(以保持功能分支的最新状态),并小心地将功能分支合并回主干(使用不同的合并算法)。
- 你尝试实现"每个任务分支"的工作流程。OK,但是选中了工具-不是OK
- Subversion中的所有分支都有同等的权利——你可以在任何方向合并任何分支(如果真的需要)
- SVN 1.8+将给您一些好处
- 对于长期的分支,密集的分支和活跃的使用跨分支合并(最小的头痛),你选择了相当糟糕的SCM -任何将合并作为"一等公民"的VCS都将是更好和更可用的选择:拥有svn背景似乎是Mercurial