# HG changeset patch # User Dirkjan Ochtman # Date 1231747622 -3600 # Node ID 6d891df43a5fdf81f1f2eebaf78ad75c6b1fb61f # Parent fbfd92d51540dfa88570819ac8c276d6d4483c61 mq: allow qpop if popped revisions are not working dir parents diff -r fbfd92d51540 -r 6d891df43a5f hgext/mq.py --- a/hgext/mq.py Mon Jan 12 09:53:55 2009 +0100 +++ b/hgext/mq.py Mon Jan 12 09:07:02 2009 +0100 @@ -1011,6 +1011,14 @@ if p in rr: self.ui.warn(_("qpop: forcing dirstate update\n")) update = True + else: + parents = [p.hex() for p in repo[None].parents()] + needupdate = False + for entry in self.applied[start:]: + if entry.rev in parents: + needupdate = True + break + update = needupdate if not force and update: self.check_localchanges(repo) @@ -1021,7 +1029,13 @@ if update: top = self.check_toppatch(repo) - if repo.changelog.heads(rev) != [revlog.bin(self.applied[-1].rev)]: + try: + heads = repo.changelog.heads(rev) + except revlog.LookupError: + node = short(rev) + raise util.Abort(_('trying to pop unknown node %s') % node) + + if heads != [revlog.bin(self.applied[-1].rev)]: raise util.Abort(_("popping would remove a revision not " "managed by this patch queue")) diff -r fbfd92d51540 -r 6d891df43a5f tests/test-mq --- a/tests/test-mq Mon Jan 12 09:53:55 2009 +0100 +++ b/tests/test-mq Mon Jan 12 09:07:02 2009 +0100 @@ -289,7 +289,7 @@ hg strip -qn tip hg tip 2>&1 | sed -e 's/unknown node .*/unknown node/' hg branches 2>&1 | sed -e 's/unknown node .*/unknown node/' -hg qpop +hg qpop 2>&1 | sed -e 's/unknown node .*/unknown node/' cat >>$HGRCPATH <