D6023: branchcache: move loading of branch names and nodes into it's own function
Yuya Nishihara
yuya at tcha.org
Mon Feb 25 17:56:59 EST 2019
> 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)
Breaks test-static-http.t probably because `f` is read twice through
different iterators.
More information about the Mercurial-devel
mailing list