obsolete.py
changeset 40 b9a5a596d9ef
parent 39 b12655157ba0
child 41 99c131e97bb3
equal deleted inserted replaced
39:b12655157ba0 40:b9a5a596d9ef
     7 # GNU General Public License version 2 or any later version.
     7 # GNU General Public License version 2 or any later version.
     8 
     8 
     9 from mercurial import util
     9 from mercurial import util
    10 from mercurial import context
    10 from mercurial import context
    11 from mercurial import revset
    11 from mercurial import revset
       
    12 from mercurial import scmutil
    12 from mercurial.node import hex, bin
    13 from mercurial.node import hex, bin
    13 
    14 
    14 # Patch changectx
    15 # Patch changectx
    15 #############################
    16 #############################
    16 
    17 
    22 
    23 
    23 context.changectx.obsolete = obsolete
    24 context.changectx.obsolete = obsolete
    24 
    25 
    25 ohidden = context.changectx.hidden
    26 ohidden = context.changectx.hidden
    26 def hidden(ctx):
    27 def hidden(ctx):
    27     ctx._repo._obsobjrels # XXX hack to fill hiddenrevs
    28     # hack to fill hiddenrevs
       
    29     # compute hidden (XXX should move elsewhere)
       
    30     if not getattr(ctx._repo.changelog, 'hiddeninit', False):
       
    31         basicquery = 'obsolete() - (ancestors(not obsolete()))'
       
    32         for rev in scmutil.revrange(ctx._repo, [basicquery]):
       
    33             ctx._repo.changelog.hiddenrevs.add(rev)
       
    34         ctx._repo.changelog.hiddeninit = True
       
    35 
    28     return ohidden(ctx)
    36     return ohidden(ctx)
    29 context.changectx.hidden = hidden
    37 context.changectx.hidden = hidden
    30 
    38 
    31 # revset
    39 # revset
    32 #############################
    40 #############################
    71             #reverse sub -> objs mapping
    79             #reverse sub -> objs mapping
    72             objrels = {}
    80             objrels = {}
    73             for sub, objs in self._obssubrels.iteritems():
    81             for sub, objs in self._obssubrels.iteritems():
    74                 for obj in objs:
    82                 for obj in objs:
    75                     objrels.setdefault(obj, set()).add(sub)
    83                     objrels.setdefault(obj, set()).add(sub)
    76 
       
    77             # compute hidden (XXX should move elsewhere)
       
    78             for obj in objrels:
       
    79                 self.changelog.hiddenrevs.add(repo[obj].rev())
       
    80 
    84 
    81             #
    85             #
    82             return objrels
    86             return objrels
    83 
    87 
    84         @util.propertycache
    88         @util.propertycache