##// END OF EJS Templates
fix: prefetch file contents...
Rodrigo Damazio Bovendorp -
r45615:263cf0f6 default draft
parent child Browse files
Show More
@@ -271,6 +271,11 b' def fix(ui, repo, *pats, **opts):'
271 basepaths = getbasepaths(repo, opts, workqueue, basectxs)
271 basepaths = getbasepaths(repo, opts, workqueue, basectxs)
272 fixers = getfixers(ui)
272 fixers = getfixers(ui)
273
273
274 # Rather than letting each worker independently fetch the files
275 # (which also would add complications for shared/keepalive
276 # connections), prefetch them all first.
277 _prefetchfiles(repo, workqueue, basepaths)
278
274 # There are no data dependencies between the workers fixing each file
279 # There are no data dependencies between the workers fixing each file
275 # revision, so we can use all available parallelism.
280 # revision, so we can use all available parallelism.
276 def getfixes(items):
281 def getfixes(items):
@@ -630,6 +635,24 b' def getbasectxs(repo, opts, revstofix):'
630 basectxs[rev].add(pctx)
635 basectxs[rev].add(pctx)
631 return basectxs
636 return basectxs
632
637
638 def _prefetchfiles(repo, workqueue, basepaths):
639 toprefetch = set()
640
641 # Prefetch the files that will be fixed.
642 for rev, path in workqueue:
643 if rev == wdirrev:
644 continue
645 toprefetch.add((rev, path))
646
647 # Prefetch the base contents for lineranges().
648 for (baserev, fixrev, path), basepath in basepaths.items():
649 toprefetch.add((baserev, basepath))
650
651 if toprefetch:
652 scmutil.prefetchfiles(repo, [
653 (rev, scmutil.matchfiles(repo, [path])) for rev, path in toprefetch
654 ])
655
633
656
634 def fixfile(ui, repo, opts, fixers, fixctx, path, basepaths, basectxs):
657 def fixfile(ui, repo, opts, fixers, fixctx, path, basepaths, basectxs):
635 """Run any configured fixers that should affect the file in this context
658 """Run any configured fixers that should affect the file in this context
General Comments 0
You need to be logged in to leave comments. Login now