Следующая последовательность команд требует, чтобы расширение Mercurial Queues было включено, а также расширение Evolve (для hg amend
, псевдоним 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 <[email protected]>
| 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 <[email protected]>
| date: Sun Mar 11 16:38:50 2018 +0530
| obsolete: rewritten using amend as 2:f7f038d3aab5 by Faheem Mitha <[email protected]> (at 2018-03-11 16:38 +0530)
| obsolete: rewritten by Faheem Mitha <[email protected]> as f7f038d3aab5 (at 2018-03-11 16:38 +0530)
| files: foo
| description:
| [mq]: p
|
|
o changeset: 0:9d3a95922194
tag: qparent
user: Faheem Mitha <[email protected]>
date: Sun Mar 11 16:38:50 2018 +0530
files: foo
description:
Add foo