Mercurial > hg
comparison contrib/perf.py @ 51519:ec640dc9cebd
branchcache: use an explicit class for the v2 version
This prepare the introduction of an experimental v3 format version.
In the process, we move the description of the format in that new class.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 27 Feb 2024 14:04:29 +0100 |
parents | 82c1a388e86a |
children | 06671781b04d |
comparison
equal
deleted
inserted
replaced
51518:c7e81615b5c4 | 51519:ec640dc9cebd |
---|---|
4203 repo.filtered(name).branchmap() | 4203 repo.filtered(name).branchmap() |
4204 if not filternames or b'unfiltered' in filternames: | 4204 if not filternames or b'unfiltered' in filternames: |
4205 # add unfiltered | 4205 # add unfiltered |
4206 allfilters.append(None) | 4206 allfilters.append(None) |
4207 | 4207 |
4208 if util.safehasattr(branchmap.branchcache, 'fromfile'): | 4208 old_branch_cache_from_file = None |
4209 branchcacheread = None | |
4210 if util.safehasattr(branchmap, 'branch_cache_from_file'): | |
4211 old_branch_cache_from_file = branchmap.branch_cache_from_file | |
4212 branchmap.branch_cache_from_file = lambda *args: None | |
4213 elif util.safehasattr(branchmap.branchcache, 'fromfile'): | |
4209 branchcacheread = safeattrsetter(branchmap.branchcache, b'fromfile') | 4214 branchcacheread = safeattrsetter(branchmap.branchcache, b'fromfile') |
4210 branchcacheread.set(classmethod(lambda *args: None)) | 4215 branchcacheread.set(classmethod(lambda *args: None)) |
4211 else: | 4216 else: |
4212 # older versions | 4217 # older versions |
4213 branchcacheread = safeattrsetter(branchmap, b'read') | 4218 branchcacheread = safeattrsetter(branchmap, b'read') |
4214 branchcacheread.set(lambda *args: None) | 4219 branchcacheread.set(lambda *args: None) |
4215 branchcachewrite = safeattrsetter(branchmap.branchcache, b'write') | 4220 if util.safehasattr(branchmap, '_LocalBranchCache'): |
4216 branchcachewrite.set(lambda *args: None) | 4221 branchcachewrite = safeattrsetter(branchmap._LocalBranchCache, b'write') |
4222 branchcachewrite.set(lambda *args: None) | |
4223 else: | |
4224 branchcachewrite = safeattrsetter(branchmap.branchcache, b'write') | |
4225 branchcachewrite.set(lambda *args: None) | |
4217 try: | 4226 try: |
4218 for name in allfilters: | 4227 for name in allfilters: |
4219 printname = name | 4228 printname = name |
4220 if name is None: | 4229 if name is None: |
4221 printname = b'unfiltered' | 4230 printname = b'unfiltered' |
4222 timer(getbranchmap(name), title=printname) | 4231 timer(getbranchmap(name), title=printname) |
4223 finally: | 4232 finally: |
4224 branchcacheread.restore() | 4233 if old_branch_cache_from_file is not None: |
4234 branchmap.branch_cache_from_file = old_branch_cache_from_file | |
4235 if branchcacheread is not None: | |
4236 branchcacheread.restore() | |
4225 branchcachewrite.restore() | 4237 branchcachewrite.restore() |
4226 fm.end() | 4238 fm.end() |
4227 | 4239 |
4228 | 4240 |
4229 @command( | 4241 @command( |
4379 else: | 4391 else: |
4380 repo = repoview.repoview(repo, filter) | 4392 repo = repoview.repoview(repo, filter) |
4381 | 4393 |
4382 repo.branchmap() # make sure we have a relevant, up to date branchmap | 4394 repo.branchmap() # make sure we have a relevant, up to date branchmap |
4383 | 4395 |
4384 try: | 4396 fromfile = getattr(branchmap, 'branch_cache_from_file', None) |
4385 fromfile = branchmap.branchcache.fromfile | 4397 if fromfile is None: |
4386 except AttributeError: | 4398 fromfile = getattr(branchmap.branchcache, 'fromfile', None) |
4387 # older versions | 4399 if fromfile is None: |
4388 fromfile = branchmap.read | 4400 fromfile = branchmap.read |
4389 | 4401 |
4390 currentfilter = filter | 4402 currentfilter = filter |
4391 # try once without timer, the filter may not be cached | 4403 # try once without timer, the filter may not be cached |
4392 while fromfile(repo) is None: | 4404 while fromfile(repo) is None: |