以下命令序列要求启用 Mercurial Queues 扩展,以及 Evolve 扩展(for hg amend
, alias hg refresh
)。
这种命令组合会弄乱现有的 Mercurial 队列,使与推送的补丁对应的提交过时,并创建一个内容完全相同的新提交。
这个错误在理论上很容易犯:只需输入hg ref
而不是hg qref
,但我最近在使用 Mercurial Queues 多年后才犯了这个错误。无论如何,我还没有想出一个干净的方法来解决这个问题并恢复原始状态。
请注意,hg rollback
在我的示例中,一个简单的方法确实有效,但我不确定它是否适用于我的情况,因为我尝试了其他方法来解决这个问题。无论如何,hg rollback
这不是一个人应该依赖的东西。总之,我如何撤消hg amend
并取回我应用的 MQ 补丁?
#!/bin/sh
hg init test
cd test
echo "This is foo" >> foo
hg add
hg ci -m "Add foo"
hg init --mq
echo "Line 2 of foo" >> foo
hg qnew p
hg ci --mq -m "Add patch p"
hg ref
hg log -vG --hidden
@ changeset: 2:f7f038d3aab5
| tag: tip
| parent: 0:9d3a95922194
| user: Faheem Mitha <faheem@faheem.info>
| date: Sun Mar 11 16:38:51 2018 +0530
| files: foo
| description:
| [mq]: p
|
|
| x changeset: 1:e467a2433c7f
|/ tag: p
| tag: qbase
| tag: qtip
| user: Faheem Mitha <faheem@faheem.info>
| date: Sun Mar 11 16:38:50 2018 +0530
| obsolete: rewritten using amend as 2:f7f038d3aab5 by Faheem Mitha <faheem@faheem.info> (at 2018-03-11 16:38 +0530)
| obsolete: rewritten by Faheem Mitha <faheem@faheem.info> as f7f038d3aab5 (at 2018-03-11 16:38 +0530)
| files: foo
| description:
| [mq]: p
|
|
o changeset: 0:9d3a95922194
tag: qparent
user: Faheem Mitha <faheem@faheem.info>
date: Sun Mar 11 16:38:50 2018 +0530
files: foo
description:
Add foo