# HG changeset patch # User Matt Mackall # Date 1444166780 18000 # Node ID 502b56a9e8973e0e19608bf360bc95372c6450cf # Parent 042344313939ab8b26821b0b60b5479ebd4b89de dirstate: batch calls to statfiles (issue4878) This makes it more interruptible. diff -r 042344313939 -r 502b56a9e897 mercurial/dirstate.py --- a/mercurial/dirstate.py Sun Oct 11 18:30:47 2015 +0900 +++ b/mercurial/dirstate.py Tue Oct 06 16:26:20 2015 -0500 @@ -931,8 +931,14 @@ # We may not have walked the full directory tree above, # so stat and check everything we missed. nf = iter(visit).next - for st in util.statfiles([join(i) for i in visit]): - results[nf()] = st + pos = 0 + while pos < len(visit): + # visit in mid-sized batches so that we don't + # block signals indefinitely + xr = xrange(pos, min(len(visit), pos + 1000)) + for st in util.statfiles([join(visit[n]) for n in xr]): + results[nf()] = st + pos += 1000 return results def status(self, match, subrepos, ignored, clean, unknown):