# HG changeset patch # User Pierre-Yves David # Date 1324308420 -3600 # Node ID 1a64195e2b094f35dfcc837a51f90c9bc3144d28 # Parent 3bdabdbb414089e98537717ea6545eee3be00304 nicer hiddenrevs init diff --git a/hgext/obsolete.py b/hgext/obsolete.py --- a/hgext/obsolete.py +++ b/hgext/obsolete.py @@ -91,6 +91,7 @@ from mercurial import discovery from mercurial import error from mercurial import commands +from mercurial import changelog from mercurial.node import hex, bin, short, nullid from mercurial.lock import release @@ -105,23 +106,6 @@ context.changectx.obsolete = obsolete -ohidden = context.changectx.hidden -def hidden(ctx): - """hacked version fo hidden that also initialize hiddenrevs set - - XXX we need something cleaner""" - # hack to fill hiddenrevs - # compute hidden (XXX should move elsewhere) - if not getattr(ctx._repo.changelog, 'hiddeninit', False): - shown = ['not obsolete()', '.', 'bookmark()', 'tagged()', - 'public()'] - basicquery = 'obsolete() - (::(%s))' % (' or '.join(shown)) - ctx._repo.changelog.hiddenrevs.update( - scmutil.revrange(ctx._repo, [basicquery])) - ctx._repo.changelog.hiddeninit = True - - return ohidden(ctx) -context.changectx.hidden = hidden ### revset ############################# @@ -486,5 +470,29 @@ finally: release(lock, wlock) + @scmutil.filecache('00changelog.i', True) + def changelog(self): + changelog = getattr(super(obsoletingrepo, self), 'changelog') + assert not changelog.__dict__.pop('hiddenrevs', ()) + def _sethidden(changelog, value): + print 'COIN COIN', value + assert not value + + + class hchangelog(changelog.__class__): + @util.propertycache + def hiddenrevs(changelog): + 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 + + + + repo.__class__ = obsoletingrepo