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: