D5637: branchmap: add some clarifications and clean up flow
mjpieters (Martijn Pieters)
phabricator at mercurial-scm.org
Mon Jan 21 18:08:22 UTC 2019
mjpieters created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
- Remove indentation where it is not needed.
- Swap the subset test branches to follow along logically and put the 'empty' case last.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5637
AFFECTED FILES
mercurial/branchmap.py
CHANGE DETAILS
diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py
--- a/mercurial/branchmap.py
+++ b/mercurial/branchmap.py
@@ -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)
To: mjpieters, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list