如何压缩具有多个后代头的水银修订
How to squash mercurial revisions with multiple descendent heads
在推送到我们的主存储库之前,我正在尝试清理一些本地(草稿)的 mercurial 历史记录。我想采取的一个步骤是将 "Fixup" 变更集压缩/滚动到其父级中。我的历史是这样的:
o [draft] 14 X
|
| o [draft] 13 Y
|/
o [draft] 12 Fixup
|
o [draft] 11 Thing to Fix
|
o [draft] 10 Z
|
~
完成后,它应该如下所示:
o [draft] 13 X
|
| o [draft] 12 Y
|/
o [draft] 11 Thing to Fix with Fixup
|
o [draft] 10 Z
|
~
显然,将两个提交滚动在一起应该不会产生任何冲突,因为后代的代码没有受到影响。但是,我找不到让 histedit 允许我编辑我的历史的方法,因为它需要编辑 "A changeset together with all its descendants."
这个编辑可以吗?应该怎么做?
当然可能。不过,我不知道如何轻松。
诀窍是把这个:
o [draft] 14 X
|
| o [draft] 13 Y
|/
o [draft] 12 Fixup
|
o [draft] 11 Thing to Fix
|
o [draft] 10 Z
|
~
进入:
o [draft] 16 Fixup
|
o [draft] 15 Thing to Fix
|
| o [draft] 14 X
| |
| | o [draft] 13 Y
| |/
| o [draft] 12 Fixup
| |
| o [draft] 11 Thing to Fix
|/
o [draft] 10 Z
|
~
其中 15 是 11 的副本,16 是 12 的副本。(使用 hg graft
执行此操作。)您现在可以使用 hg histedit
将这两者组合起来。
现在很容易在替换旧的 15 和 16 的新 15 上复制 13 和 14:
o [draft] 17 X
|
| o [draft] 16 Y
|/
o [draft] 15 Thing to Fix with Fixup
|
| o [draft] 14 X
| |
| | o [draft] 13 Y
| |/
| o [draft] 12 Fixup
| |
| o [draft] 11 Thing to Fix
|/
o [draft] 10 Z
|
~
现在您可以hg strip -r 11
删除 11、12、13 和 14,只留下更正后的提交。 (请注意,您可以使用 rebase 来简化这一点。长形式主要是为了说明和便于理解。)
在推送到我们的主存储库之前,我正在尝试清理一些本地(草稿)的 mercurial 历史记录。我想采取的一个步骤是将 "Fixup" 变更集压缩/滚动到其父级中。我的历史是这样的:
o [draft] 14 X
|
| o [draft] 13 Y
|/
o [draft] 12 Fixup
|
o [draft] 11 Thing to Fix
|
o [draft] 10 Z
|
~
完成后,它应该如下所示:
o [draft] 13 X
|
| o [draft] 12 Y
|/
o [draft] 11 Thing to Fix with Fixup
|
o [draft] 10 Z
|
~
显然,将两个提交滚动在一起应该不会产生任何冲突,因为后代的代码没有受到影响。但是,我找不到让 histedit 允许我编辑我的历史的方法,因为它需要编辑 "A changeset together with all its descendants."
这个编辑可以吗?应该怎么做?
当然可能。不过,我不知道如何轻松。
诀窍是把这个:
o [draft] 14 X
|
| o [draft] 13 Y
|/
o [draft] 12 Fixup
|
o [draft] 11 Thing to Fix
|
o [draft] 10 Z
|
~
进入:
o [draft] 16 Fixup
|
o [draft] 15 Thing to Fix
|
| o [draft] 14 X
| |
| | o [draft] 13 Y
| |/
| o [draft] 12 Fixup
| |
| o [draft] 11 Thing to Fix
|/
o [draft] 10 Z
|
~
其中 15 是 11 的副本,16 是 12 的副本。(使用 hg graft
执行此操作。)您现在可以使用 hg histedit
将这两者组合起来。
现在很容易在替换旧的 15 和 16 的新 15 上复制 13 和 14:
o [draft] 17 X
|
| o [draft] 16 Y
|/
o [draft] 15 Thing to Fix with Fixup
|
| o [draft] 14 X
| |
| | o [draft] 13 Y
| |/
| o [draft] 12 Fixup
| |
| o [draft] 11 Thing to Fix
|/
o [draft] 10 Z
|
~
现在您可以hg strip -r 11
删除 11、12、13 和 14,只留下更正后的提交。 (请注意,您可以使用 rebase 来简化这一点。长形式主要是为了说明和便于理解。)