mjpieters created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY This avoids reading all the file into memory if the cache turns out to be invalid. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D4281 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 @@ -40,13 +40,7 @@ def read(repo): try: f = repo.cachevfs(_filename(repo)) - lines = f.read().split('\n') - f.close() - except (IOError, OSError): - return None - - try: - cachekey = lines.pop(0).split(" ", 2) + cachekey = next(f).split(" ", 2) last, lrev = cachekey[:2] last, lrev = bin(last), int(lrev) filteredhash = None @@ -58,7 +52,7 @@ # invalidate the cache raise ValueError(r'tip differs') cl = repo.changelog - for l in lines: + for l in f: if not l: continue node, state, label = l.split(" ", 2) @@ -72,6 +66,10 @@ partial.setdefault(label, []).append(node) if state == 'c': partial._closednodes.add(node) + + except (IOError, OSError): + return None + except Exception as inst: if repo.ui.debugflag: msg = 'invalid branchheads cache' To: mjpieters, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel