D6023: branchcache: move loading of branch names and nodes into it's own function

yuja (Yuya Nishihara) phabricator at mercurial-scm.org
Mon Feb 25 17:58:09 EST 2019


yuja added a comment.


  >   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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6023

To: pulkit, #hg-reviewers, lothiraldan
Cc: yuja, lothiraldan, mercurial-devel


More information about the Mercurial-devel mailing list