2407 repo.filtered(name).branchmap() |
2407 repo.filtered(name).branchmap() |
2408 if not filternames or b'unfiltered' in filternames: |
2408 if not filternames or b'unfiltered' in filternames: |
2409 # add unfiltered |
2409 # add unfiltered |
2410 allfilters.append(None) |
2410 allfilters.append(None) |
2411 |
2411 |
2412 branchcacheread = safeattrsetter(branchmap, b'read') |
2412 if util.safehasattr(branchmap.branchcache, 'fromfile'): |
|
2413 branchcacheread = safeattrsetter(branchmap.branchcache, b'fromfile') |
|
2414 branchcacheread.set(classmethod(lambda *args: None)) |
|
2415 else: |
|
2416 # older versions |
|
2417 branchcacheread = safeattrsetter(branchmap, b'read') |
|
2418 branchcacheread.set(lambda *args: None) |
2413 branchcachewrite = safeattrsetter(branchmap.branchcache, b'write') |
2419 branchcachewrite = safeattrsetter(branchmap.branchcache, b'write') |
2414 branchcacheread.set(lambda repo: None) |
2420 branchcachewrite.set(lambda *args: None) |
2415 branchcachewrite.set(lambda bc, repo: None) |
|
2416 try: |
2421 try: |
2417 for name in allfilters: |
2422 for name in allfilters: |
2418 printname = name |
2423 printname = name |
2419 if name is None: |
2424 if name is None: |
2420 printname = b'unfiltered' |
2425 printname = b'unfiltered' |
2554 else: |
2559 else: |
2555 repo = repoview.repoview(repo, filter) |
2560 repo = repoview.repoview(repo, filter) |
2556 |
2561 |
2557 repo.branchmap() # make sure we have a relevant, up to date branchmap |
2562 repo.branchmap() # make sure we have a relevant, up to date branchmap |
2558 |
2563 |
|
2564 try: |
|
2565 fromfile = branchmap.branchcache.fromfile |
|
2566 except AttributeError: |
|
2567 # older versions |
|
2568 fromfile = branchmap.read |
|
2569 |
2559 currentfilter = filter |
2570 currentfilter = filter |
2560 # try once without timer, the filter may not be cached |
2571 # try once without timer, the filter may not be cached |
2561 while branchmap.read(repo) is None: |
2572 while fromfile(repo) is None: |
2562 currentfilter = subsettable.get(currentfilter) |
2573 currentfilter = subsettable.get(currentfilter) |
2563 if currentfilter is None: |
2574 if currentfilter is None: |
2564 raise error.Abort(b'No branchmap cached for %s repo' |
2575 raise error.Abort(b'No branchmap cached for %s repo' |
2565 % (filter or b'unfiltered')) |
2576 % (filter or b'unfiltered')) |
2566 repo = repo.filtered(currentfilter) |
2577 repo = repo.filtered(currentfilter) |
2567 timer, fm = gettimer(ui, opts) |
2578 timer, fm = gettimer(ui, opts) |
2568 def setup(): |
2579 def setup(): |
2569 if clearrevlogs: |
2580 if clearrevlogs: |
2570 clearchangelog(repo) |
2581 clearchangelog(repo) |
2571 def bench(): |
2582 def bench(): |
2572 branchmap.read(repo) |
2583 fromfile(repo) |
2573 timer(bench, setup=setup) |
2584 timer(bench, setup=setup) |
2574 fm.end() |
2585 fm.end() |
2575 |
2586 |
2576 @command(b'perfloadmarkers') |
2587 @command(b'perfloadmarkers') |
2577 def perfloadmarkers(ui, repo): |
2588 def perfloadmarkers(ui, repo): |