Mercurial > hg > mutable-history
diff hgext/obsolete.py @ 215:0eceb5a48485
obsolete: fix changelog reload
This changelog was not properly reloaded. This leaded to bug with rollback and
strip.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Wed, 25 Apr 2012 18:11:52 +0200 (2012-04-25) |
parents | a140d1857931 |
children | 786eb34d93ea |
line wrap: on
line diff
--- a/hgext/obsolete.py +++ b/hgext/obsolete.py @@ -620,25 +620,31 @@ @storecache('00changelog.i') def changelog(self): - changelog = getattr(super(obsoletingrepo, self), 'changelog') - old = changelog.__dict__.pop('hiddenrevs', ()) + # << copy pasted from mercurila source + c = changelog.changelog(self.sopener) + if 'HG_PENDING' in os.environ: + p = os.environ['HG_PENDING'] + if p.startswith(self.root): + c.readpending('00changelog.i.a') + # >> end of the copy paste + old = c.__dict__.pop('hiddenrevs', ()) if old: ui.warn("old wasn't empty ? %r" % old) - def _sethidden(changelog, value): + def _sethidden(c, value): assert not value - class hchangelog(changelog.__class__): + class hchangelog(c.__class__): @util.propertycache - def hiddenrevs(changelog): + def hiddenrevs(c): shown = ['not obsolete()', '.', 'bookmark()', 'tagged()', 'public()'] basicquery = 'obsolete() - (::(%s))' % (' or '.join(shown)) # !!! self is repo not changelog result = set(scmutil.revrange(self, [basicquery])) return result - changelog.__class__ = hchangelog - return changelog + c.__class__ = hchangelog + return c