D6023: branchcache: move loading of branch names and nodes into it's own function
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Mon Feb 25 15:07:19 UTC 2019
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
This will help me in implementing lazy loading of the branchcache in upcoming
patches.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6023
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
@@ -179,23 +179,7 @@
if not bcache.validfor(repo):
# invalidate the cache
raise ValueError(r'tip differs')
- cl = repo.changelog
- for line in lineiter:
- line = line.rstrip('\n')
- if not line:
- continue
- node, state, label = line.split(" ", 2)
- if state not in 'oc':
- raise ValueError(r'invalid branch state')
- label = encoding.tolocal(label.strip())
- node = bin(node)
- if not cl.hasnode(node):
- raise ValueError(
- r'node %s does not exist' % pycompat.sysstr(hex(node)))
- bcache.setdefault(label, []).append(node)
- if state == 'c':
- bcache._closednodes.add(node)
-
+ bcache.load(repo, f)
except (IOError, OSError):
return None
@@ -214,6 +198,26 @@
return bcache
+ def load(self, repo, f):
+ """ fully loads the branchcache by reading from the file f """
+ cl = repo.changelog
+ lineiter = iter(f)
+ for line in lineiter:
+ line = line.rstrip('\n')
+ if not line:
+ continue
+ node, state, label = line.split(" ", 2)
+ if state not in 'oc':
+ raise ValueError(r'invalid branch state')
+ label = encoding.tolocal(label.strip())
+ node = bin(node)
+ if not cl.hasnode(node):
+ raise ValueError(
+ r'node %s does not exist' % pycompat.sysstr(hex(node)))
+ self.setdefault(label, []).append(node)
+ if state == 'c':
+ self._closednodes.add(node)
+
@staticmethod
def _filename(repo):
"""name of a branchcache file for a given repo or repoview"""
To: pulkit, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list