Mercurial > hg
changeset 41797:68bbcc70e274
branchcache: move loading of branch names and nodes into it's own function
This will help me in implementing lazy loading of the branchcache in upcoming
patches.
Differential Revision: https://phab.mercurial-scm.org/D6023
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Mon, 25 Feb 2019 16:49:01 +0300 |
parents | 2d835c42ab41 |
children | 8c42b4a3d447 |
files | mercurial/branchmap.py |
diffstat | 1 files changed, 21 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/branchmap.py Wed Feb 20 15:02:59 2019 -0500 +++ b/mercurial/branchmap.py Mon Feb 25 16:49:01 2019 +0300 @@ -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"""