相关疑难解决方法(0)

在Mercurial上支持向后合并

如何在没有死亡的情况下扭转合并对极化分支的影响?

这个问题困扰了我好几个月,我终于放弃了.

您有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而不是"

关于历史重写技巧:

所有这些追溯活动解决方案的问题如下:

  1. 我们有9000次提交.
  2. 因此新鲜克隆需要半小时
  3. 如果某个存储库中甚至存在一个坏的克隆,那么它就有可能与原始存储库重新联系,并再次将其重新打开.
  4. 每个人都已经克隆了这个存储库,现在已经过了几天,正在进行提交.
  5. 一个这样的克隆,碰巧是一个真实的网站,所以"擦掉那个,从头开始"="大nono"

(我承认,上面的许多内容都有些愚蠢,但它们超出了我的控制范围).

唯一可行的解​​决方案是假设人们能够并且将会做错事,并且有一种方法可以"消除"这种错误.

merge mercurial branch dvcs

77
推荐指数
2
解决办法
1万
查看次数

合并方向在Mercurial中是否重要?

举一个简单的例子:我正在使用默认分支,在本地提交一些更改集,然后从主存储库中提取了一些更改集.我已经在我孤立的本地存储库中工作了几天,因此在将结果推回到master之前,要进行相当多的更改.

default ---o-o-o-o-o-o-o-o-o-o-o  (pulled stuff)
            \
             o----o------------o  (my stuff)
Run Code Online (Sandbox Code Playgroud)

我现在可以做两件事.

选项1:

hg pull
hg merge
Run Code Online (Sandbox Code Playgroud)

结果#1:

default ---o-o-o-o-o-o-o-o-o-o-o
            \                   \
             o----o------------o-O
Run Code Online (Sandbox Code Playgroud)

选项#2:

hg pull
hg update
hg merge
Run Code Online (Sandbox Code Playgroud)

结果#2:

default ---o-o-o-o-o-o-o-o-o-o-o-O
            \                   /
             o----o------------o
Run Code Online (Sandbox Code Playgroud)

这两个结果看起来与我同构,但在实践中似乎选项#2导致更小的变更集(因为它只对主线应用我的少量更改,而不是将所有主线更改应用于我的少数).

我的问题是:这有关系吗?我应该关心合并的方向吗?如果我这样做,我可以节省空间吗?(hg log --patch --rev tip在合并之后做的就是这样.)

merge mercurial dvcs

16
推荐指数
1
解决办法
1058
查看次数

在Mercurial中清除修订历史记录

我是Mercurial的新手,我还在努力建立一个工作流程.

我克隆了一个远程存储库.然后我进行更改并提交到我的本地存储库.我想推出一个干净的修订历史.我不想推出一些可能只会使远程存储库变得混乱的修订(例如,对方法进行拼写重命名,添加javadoc,删除空格等).这可能吗?

谢谢!

mercurial

9
推荐指数
1
解决办法
1071
查看次数

标签 统计

mercurial ×3

dvcs ×2

merge ×2

branch ×1