Mercurial 重设要素分支的基础以避免合并
我有默认的公共分支和私有的功能分支Mercurial 重设要素分支的基础以避免合并,mercurial,rebase,Mercurial,Rebase,我有默认的公共分支和私有的功能分支 default 1-----4-------8 \ \ feature 2-3---5-6-7 当我将更新设置为默认值时,我希望它们可用于要素分支。 我可以用重复的合并来完成,但是我最终会有很多合并。 我在编辑历史方面没有问题;功能分支仅在我的本地 存储库 我想这样做: default 1-----4-8 \ \ feature 2-3-----5-6-7 或者更好: default 1-4-
default 1-----4-------8
\ \
feature 2-3---5-6-7
当我将更新设置为默认值时,我希望它们可用于要素分支。
我可以用重复的合并来完成,但是我最终会有很多合并。
我在编辑历史方面没有问题;功能分支仅在我的本地
存储库
我想这样做:
default 1-----4-8
\ \
feature 2-3-----5-6-7
或者更好:
default 1-4-8
\
feature 2-3-5-6-7
我试着做:
hg rebase --dest 8 --source 5
但它将元素移到了错误的分支
default 1-----4-8-5-6-7
\ /
feature 2-3----
分支在不同的文件中有变化,所以不需要担心复杂的合并
编辑:
--keepbranches
选项似乎在表面上实现了我想要的功能。但是合并提交信息看起来很奇怪:就像MercurialHg认为它仍然是一个默认分支,但只是重命名为feature-branch。这似乎是一种黑客行为,我不是100%相信这是一种方式。我认为您的工作流更适合使用,而不是使用rebase
原因是,将分支的父级更改为8(以前是1)并不是一件小事,但这正是使用MQ时得到的效果
Mercurial queues保留了一组修补程序,每个修订版对应一个修补程序,在您完成功能的同时,可以根据需要轻松应用/取消应用这些修补程序
在您的场景中,您将执行以下操作:
您可以从这一点开始使用MQ。因为您已经将3和4合并为5,所以重新整理会有点乏味。我不知道有什么简单的方法可以做到这一点。我能想到的唯一方法是手动将5、6、7重新应用到3上,然后重新设置整组的基础。这将给你带来“更好”的局面。合并有什么错?每次移植或重新应用修补程序时,您都在有效地进行合并,但没有记录(在变更集中)这是如何发生的。@Ringding:由于更改没有重叠,并且在功能分支上与先前的默认更改没有关系,我希望Mercurial不会太难自动计算出来。@Edward:合并太多会给提交历史记录增加不必要的干扰,特别是如果它们可以合并成更少的合并而不会丢失任何东西。Mercurial还倾向于对clone上的修订进行重新排序,这会使包含许多单向合并的图形看起来比实际情况更复杂。