【问题标题】:When merging in svn can I decide every change?在 svn 中合并时,我可以决定每个更改吗?
【发布时间】:2018-01-17 15:07:47
【问题描述】:

我有一个项目,它有一个功能分支和一个主干。我现在意识到我应该将主干的更改集成到功能分支中。当我现在这样做时,我得到了一些源代码,其中 svn 失去了双方的重要变化。所以....我可以手动进行合并 - 我决定每个更改应该是什么?

【问题讨论】:

  • 这里的层次结构是什么?您在两个目录中都使用了“分支”一词,这使得您很难理解您的开发流程是如何设置的。那么feature branch 是主干,main branchfeature branch 的一个分支吗?还是featuremain 都是从一个单一的主干分支出来的?
  • @Chris 抱歉,我的描述不好。我有一个后备箱。 “功能”是从主干分支出来的。主干和功能都得到了发展。我想将主干的更改集成到功能中(在将功能提交到主干之前)。所以 main = 树干

标签: svn merge


【解决方案1】:

好的,我现在明白了,感谢您的澄清。

我想我们以前都遇到过这种情况,我知道让一切恢复同步肯定会很困难。你真的有两种选择之一。我建议的第一个是使用您的功能分支并分段运行svn merge,所以假设feature 在修订版100 时在main 上分支,现在我们处于修订版150。我将从

svn merge -r 101:110 并解决所有问题,然后提交。然后合并111-120(或者你认为你可以处理多少次修订。10-20 通常是一个不错的数字,因为提交到main 的数量通常只有一半左右)。

选项 #2(我以前做过一次,并没有我想象的那么痛苦)是如果你真的熟悉这个功能分支,有时从主干,然后开始在这个新分支上“重放”您的功能分支提交。

如果两个分支之间的差异真的很大,不幸的是需要一些时间。

【讨论】:

  • 谢谢你。一点一点地做这件事对我有用。似乎让 svn 感到困惑的是我重命名了几个文件。通过重命名来完成几个修订有助于合并的其余部分。
  • 是的,树冲突(通常是 svn movesvn rename-ing 文件的结果)有时会非常乏味,如果它们有很多或者如果有很多代码在所述文件。有很多次,我的队友的开发分支彼此完全不同步,所以这是我总是告诉我的团队在遇到困难时采取的方法。干杯!
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2015-11-29
相关资源
最近更新 更多