Stripping hidden changesets breaks "hg outgoing"

Greg Ward greg at
Tue Feb 5 08:49:53 CST 2013

Hi all --

I've been using evolve instead of MQ pretty happily for a couple of
weeks now. Of course I didn't find any bugs during the 2.5 feature
freeze. ;-) But I did accrue a lot of hidden changesets that I don't
care about anymore; the history in question has settled down and been
published. So I thought I would clean up a bit.

With a bit of head-scratching, I figured out how to list only hidden

  hg log --hidden -r 'hidden()'

(File that under "not obvious"!)

So I decided to strip some of the oldest hidden changesets:

  $ hg strip 311 --hidden
  saved backup bundle to /home/greg/src/fubsy/.hg/strip-backup/967ddf2d89b6-backup.hg
  $ hg strip 311 --hidden
  saved backup bundle to /home/greg/src/fubsy/.hg/strip-backup/db3731d77cf1-backup.hg
  $ hg strip 311 --hidden
  saved backup bundle to /home/greg/src/fubsy/.hg/strip-backup/971c100522a8-backup.hg

All fine so far. Then I wanted to make sure I hadn't screwed up and
stripped any valuable changesets:

  $ hg in
  comparing with ssh://
  searching for changes
  no changes found

Good. And because I'm paranoid:

  $ hg out
  comparing with ssh://
  searching for changes
  abort: unknown revision 'ce0a27dd3d06ea138f2a45568fd51d0d0a44f9a2'!

Oooops! That is indeed one of the changesets I stripped. So, something
somewhere is incorrectly remembering that changeset ID: who?

  $ find .hg -type f | xargs grep ce0a27dd3d06ea138f2a45568fd51d0d0a44f9a2
  .hg/store/phaseroots:1 ce0a27dd3d06ea138f2a45568fd51d0d0a44f9a2

Hmmm. My guess is that manually editing phaseroots will "fix" things,
but I'll avoid that for now.

Do you need me to provide my pre-strip repo with all the hidden
changesets? Or is this enough info for a evolve/hidden/filtering
expert to reproduce?

Greg Ward                  
<greg at>                       @gergdotca

More information about the Mercurial-devel mailing list