mercurial/repoview.py
changeset 32426 06aa645e2372
parent 31444 55390e97fdd2
child 32427 8db2feb04ceb
equal deleted inserted replaced
32425:397e3a2e9347 32426:06aa645e2372
    29     Because we use the set of immutable changesets as a fallback subset in
    29     Because we use the set of immutable changesets as a fallback subset in
    30     branchmap (see mercurial.branchmap.subsettable), you cannot set "public"
    30     branchmap (see mercurial.branchmap.subsettable), you cannot set "public"
    31     changesets as "hideable". Doing so would break multiple code assertions and
    31     changesets as "hideable". Doing so would break multiple code assertions and
    32     lead to crashes."""
    32     lead to crashes."""
    33     return obsolete.getrevs(repo, 'obsolete')
    33     return obsolete.getrevs(repo, 'obsolete')
       
    34 
       
    35 def _getdynamicblockers(repo):
       
    36     """Non-cacheable revisions blocking hidden changesets from being filtered.
       
    37 
       
    38     Get revisions that will block hidden changesets and are likely to change,
       
    39     but unlikely to create hidden blockers. They won't be cached, so be careful
       
    40     with adding additional computation."""
       
    41 
       
    42     cl = repo.changelog
       
    43     blockers = set()
       
    44     blockers.update([par.rev() for par in repo[None].parents()])
       
    45     blockers.update([cl.rev(bm) for bm in repo._bookmarks.values()])
       
    46 
       
    47     tags = {}
       
    48     tagsmod.readlocaltags(repo.ui, repo, tags, {})
       
    49     if tags:
       
    50         rev, nodemap = cl.rev, cl.nodemap
       
    51         blockers.update(rev(t[0]) for t in tags.values() if t[0] in nodemap)
       
    52     return blockers
    34 
    53 
    35 def _getstatichidden(repo):
    54 def _getstatichidden(repo):
    36     """Revision to be hidden (disregarding dynamic blocker)
    55     """Revision to be hidden (disregarding dynamic blocker)
    37 
    56 
    38     To keep a consistent graph, we cannot hide any revisions with
    57     To keep a consistent graph, we cannot hide any revisions with
    71                 seen.add(parent)
    90                 seen.add(parent)
    72                 if pre < len(seen) and getphase(repo, rev):
    91                 if pre < len(seen) and getphase(repo, rev):
    73                     heappush(heap, -parent)
    92                     heappush(heap, -parent)
    74     return hidden
    93     return hidden
    75 
    94 
    76 def _getdynamicblockers(repo):
       
    77     """Non-cacheable revisions blocking hidden changesets from being filtered.
       
    78 
       
    79     Get revisions that will block hidden changesets and are likely to change,
       
    80     but unlikely to create hidden blockers. They won't be cached, so be careful
       
    81     with adding additional computation."""
       
    82 
       
    83     cl = repo.changelog
       
    84     blockers = set()
       
    85     blockers.update([par.rev() for par in repo[None].parents()])
       
    86     blockers.update([cl.rev(bm) for bm in repo._bookmarks.values()])
       
    87 
       
    88     tags = {}
       
    89     tagsmod.readlocaltags(repo.ui, repo, tags, {})
       
    90     if tags:
       
    91         rev, nodemap = cl.rev, cl.nodemap
       
    92         blockers.update(rev(t[0]) for t in tags.values() if t[0] in nodemap)
       
    93     return blockers
       
    94 
       
    95 cacheversion = 1
    95 cacheversion = 1
    96 cachefile = 'cache/hidden'
    96 cachefile = 'cache/hidden'
    97 
    97 
    98 def cachehash(repo, hideable):
    98 def cachehash(repo, hideable):
    99     """return sha1 hash of repository data to identify a valid cache.
    99     """return sha1 hash of repository data to identify a valid cache.