如何在没有死亡的情况下扭转合并对极化分支的影响?
这个问题困扰了我好几个月,我终于放弃了.
您有1个存储库,有2个 命名分支.A和B.
A发生的变化将不可避免地发生在B.
B上直接发生的变化绝不会发生在A上.
在这样的配置中,将"B"合并为"A"会在存储库中产生可怕的问题,因为对B的所有更改都出现在A中,就好像它们是在A中制作的一样.
从这种情况中恢复的唯一"正常"方式似乎是"退出"合并,即:
hg up -r A
hg backout -r BadMergeRev --parent BadMergerevBeforeOnA
Run Code Online (Sandbox Code Playgroud)
这看起来很好,花花公子,直到你决定稍后在正确的方向合并,你最终会发生各种令人讨厌的事情,特别是分支B上删除/注释掉的代码突然变得没有注意或没有注释.
到目前为止,还没有一个可行的解决方案,除了"让它做它的事情,然后解决所有的问题",说实话有点fubar.
这是澄清问题的图像:
[原始图像丢失]
文件C&E(或更改C&E)必须仅出现在分支b上,而不是出现在分支a上.这里的版本A9(分支a,revno 9)是问题的开始.
修订版A10和A11是"退出合并"和"合并退出"阶段.
并且修订版B12是多变的,错误地反复删除了意图不被删除的更改.
这种困境引起了很多挫折和蓝烟,我想结束它.
尝试禁止反向合并可能是一个明显的答案,无论是使用钩子还是使用策略,我发现这种情况相当高并且发生这种情况的可能性很大,即使采取了对策,你仍然必须假设它不可避免地会发生,以便你可以解决它.
在模型中我使用了Seperate文件.这些使问题听起来很简单.这些只是代表任意变化,可能是一个单独的路线.
此外,为了增加对伤害的侮辱,在分支A上发生了实质性的变化,留下了常见的问题"分支A的变化与分支B的变化发生冲突,分支B刚刚出现(并且退出)看起来像一个变化在分支A而不是"
所有这些追溯活动解决方案的问题如下:
(我承认,上面的许多内容都有些愚蠢,但它们超出了我的控制范围).
唯一可行的解决方案是假设人们能够并且将会做错事,并且有一种方法可以"消除"这种错误.