I used hg shelve in a repository, where I had some unfinished changes because I needed to switch to a different head and perform unrelated changes.
Once my work on the other head was committed, I switched back to the head on which I had originally used hg shelve and ran a hg unshelve command. This was the result:
$ hg unshelve
unshelving change 'default'
adding changesets
adding manifests
adding file changes
added 1 changesets with 4 changes to 4 files (+1 heads)
abort: uncommitted changes
$ hg diff
warning: ignoring unknown working parent 893e15ecb5b4!
$
I did run hg head before and after the unshelve command and saw identical outputs. The commit 893e15ecb5b4 never existed, I have no clue where Mercurial got it from.
In case it is of any relevance, I am running Mercurial version 2.8.2 on Ubuntu 14.04.
How can I get my repository back in a working state, and how can I get my shelved changes back?
The following steps solved the problems for me:
hg debugsetparents to replace the corrupted parent revision number 893e15ecb5b4 with the correct one I had updated to before using unshelve
hg manifest | tr '\n' '\0' | xargs -0 touch to get it to notice any local changes again.patch -p1 < .hg/shelved/default.patch, which in my case did exactly what hg unshelve should have done for me in the first place.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With