Mercurial > hg
changeset 41567:c795c462b1d6
branchmap: add some clarifications and clean up flow
- Remove indentation where it is not needed.
- Swap the subset test branches to follow along logically and put the 'empty'
case last.
Differential Revision: https://phab.mercurial-scm.org/D5637
author | Martijn Pieters <mj@octobus.net> |
---|---|
date | Mon, 21 Jan 2019 17:41:59 +0000 |
parents | eb7ce452e0fb |
children | 641c8b66a825 |
files | mercurial/branchmap.py |
diffstat | 1 files changed, 22 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/branchmap.py Mon Jan 21 16:37:23 2019 +0000 +++ b/mercurial/branchmap.py Mon Jan 21 17:41:59 2019 +0000 @@ -44,22 +44,33 @@ 'immutable': 'base'} def updatecache(repo): + """Update the cache for the given filtered view on a repository""" + # This can trigger updates for the caches for subsets of the filtered + # view, e.g. when there is no cache for this filtered view or the cache + # is stale. + cl = repo.changelog filtername = repo.filtername bcache = repo._branchcaches.get(filtername) + if bcache is None or not bcache.validfor(repo): + # cache object missing or cache object stale? Read from disk + bcache = branchcache.fromfile(repo) revs = [] - if bcache is None or not bcache.validfor(repo): - bcache = branchcache.fromfile(repo) - if bcache is None: - subsetname = subsettable.get(filtername) - if subsetname is None: - bcache = branchcache() - else: - subset = repo.filtered(subsetname) - bcache = subset.branchmap().copy() - extrarevs = subset.changelog.filteredrevs - cl.filteredrevs - revs.extend(r for r in extrarevs if r <= bcache.tiprev) + if bcache is None: + # no (fresh) cache available anymore, perhaps we can re-use + # the cache for a subset, then extend that to add info on missing + # revisions. + subsetname = subsettable.get(filtername) + if subsetname is not None: + subset = repo.filtered(subsetname) + bcache = subset.branchmap().copy() + extrarevs = subset.changelog.filteredrevs - cl.filteredrevs + revs.extend(r for r in extrarevs if r <= bcache.tiprev) + else: + # nothing to fall back on, start empty. + bcache = branchcache() + revs.extend(cl.revs(start=bcache.tiprev + 1)) if revs: bcache.update(repo, revs)