Stripping hidden changesets breaks "hg outgoing"

Aurélien Campéas aurelien.campeas at logilab.fr
Tue Feb 5 11:27:32 CST 2013


Le 05/02/2013 17:09, Greg Ward a écrit :
> Ouch. So I could get back to work with minimal fuss, I tried editing
> .hg/store/phaseroots to remove the stripped changeset that "hg out"
> was complaining about. Then, because I'm an idiot (or something), I
> tried stripping *just one more* hidden changeset:
>
>    $ hg strip 316
>    saved backup bundle to /home/greg/src/fubsy/.hg/strip-backup/ce0a27dd3d06-backup.hg
>    ** Unknown exception encountered with possibly-broken third-party extension evolve
>    ** which supports versions unknown of Mercurial.
>    ** Please disable evolve and try your action again.
>    ** If that fixes the bug please report it to https://bitbucket.org/marmoute/mutable-history/issues
>    ** Python 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2]
>    ** Mercurial Distributed SCM (version 2.5+2-151f78a07607)
>    ** Extensions loaded: mq, patchbomb, record, purge, share, extdiff, progress, color, rebase, evolve
>    Traceback (most recent call last):
>      File "/home/greg/bin/hg", line 38, in<module>
>        mercurial.dispatch.run()
[...]
>      File "/home/greg/src/hg-stable/mercurial/ancestor.py", line 230, in __iter__
>        for parent in parentrevs(visit.popleft()):
>      File "/home/greg/src/hg-stable/mercurial/changelog.py", line 204, in parentrevs
>        raise IndexError(rev)
>    IndexError: 445
>
> Disabling evolve avoided that problem.
>
> Moral of the story: if you want to go hunting for bugs in Mercurial
> and/or evolve, try stripping hidden changesets. If you just want to
> get work done, don't!
>
> I've saved a tarball of the hosed repo + working dir (open source, 80
> MB) if anyone is interested. I've recloned from my public repo to
> clean up hidden changesets the "safe" way.
>
>         Greg

That looks like a bad (and possibly recent) regression anyway.

Sometimes I "garbage collect" some repos full of obsolete changesets
(with something like 'hg strip "obsolete()"') and it does not crash and
burn like this.

(Could the recent branchmap cache patches have introduced some pbs. wrt 
stripping ?)


More information about the Mercurial-devel mailing list