[Bug 4082] New: Cannot abort unshelve if tip^ is public. yes really
mercurial-bugs at selenic.com
mercurial-bugs at selenic.com
Mon Nov 4 21:27:56 CST 2013
http://bz.selenic.com/show_bug.cgi?id=4082
Priority: normal
Bug ID: 4082
CC: mercurial-devel at selenic.com
Assignee: bugzilla at selenic.com
Summary: Cannot abort unshelve if tip^ is public. yes really
Severity: bug
Classification: Unclassified
OS: Linux
Reporter: durham at fb.com
Hardware: PC
Status: UNCONFIRMED
Version: 2.8
Component: rebase
Product: Mercurial
hg init foo
cd foo
echo a > a && hg ci -Aqm a
hg book master
hg book foo
echo b > b && hg ci -Aqm b
hg up master
echo c > c && hg ci -Aqm c
hg phase -p -r .
hg up foo
hg log -G --template "{rev} {desc} ({bookmarks} - {phase})\n"
o 2 c (master - public)
|
| @ 1 b (foo - draft)
|/
o 0 a ( - public)
echo C > c
hg shelve
hg up master
hg unshelve
hg unshelve --abort
warning: can't clean up immutable changesets fa81ef874a93
rebase aborted
abort: outstanding uncommitted merges
Expected: the unshelve aborts
Actual: the abort fails because rebase failed to clean up the merge
This is caused by rebase using -2 as a rev marker, then checking for
immutableness. This resolves to the tip rev context, but when it checks the
phase cache (which is an array) it ends up indexing -2 into the array, which is
the tip^ commit. Fun times.
This also causes a normal rebase --abort to leave the user in a merge state,
instead of a clean state.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Mercurial-devel
mailing list