0

我们使用 SVN 1.6 我们喜欢在分支之间执行代码合并,我们处于两难境地。

分支 A 存在
人们在分支 A 上进行代码更改
从分支 A 创建的分支 B
人们在分支 A 和 B 上都进行代码更改 分支
A 同步代码合并到分支 B
一段时间后
,从分支 A 创建的分支 C 分支
A 继续同步代码合并到分支 B(短时间)
人们在分支 C 上进行代码更改 人们停止在分支 A 上更改代码并“冻结”分支,不再有 ci
人们在分支 B 上进行代码更改
分支 C 同步代码合并到分支 B
人们进行代码更改在分支 B 和 C 上
经过一段时间

现在的困境:我们喜欢将分支 B 合并到分支 C

因为分支 B 来自分支 A 而不是分支 C,我们无法应用 --reintegrate 选项将代码从 B 合并到 C,因为它们不共享共同祖先

合并(没有 --reintegrate 选项)以防止 (C in B) 的“双重合并/重复代码”进入分支 C 的风险最小的方法是什么?

4

1 回答 1

0

通过简单的绘图可视化您的分支结构。我对你的问题的理解是:

               C ---- C ---- C ----- C
              /        \      \
A --- A ---- A --- A    \      \      ???
 \     \      \     \    \      \
  B --- B ---- B --- B -- B ---- B ---- B

我会将 C 和 B 整合到 A 中。如果这不是一个选项,您可以分 3 个步骤/3 个系列步骤来完成:

  1. 将 B 中完成的所有更改合并到 C 中,但不合并从 A 中合并的更改。这样做直到您到达从 A 到 B 的最后一次合并(不在 C 中)
  2. 合并从 A 到 B 的最后一次合并到 C
  3. 合并在 B 上所做的剩余更改(在最后一次从 A 合并之后),但忽略 C 中包含的更改

我对你的结构并不完全清楚。如果会

               C ---- C ---- C ----- C
              /        \      \
A --- A ---- A --- A    \      \      ???
 \     \            \    \      \
  B --- B ---- B --- B -- B ---- B ---- B

我会将最后的更改从 A 直接带到 C 中。

于 2013-10-25T22:04:36.723 回答