contrib/perf.py
changeset 47150 8d3c2f9d4af7
parent 47149 396442cd7e6a
child 47477 eb416759af7e
equal deleted inserted replaced
47149:396442cd7e6a 47150:8d3c2f9d4af7
  1824     import mercurial.revlog
  1824     import mercurial.revlog
  1825 
  1825 
  1826     mercurial.revlog._prereadsize = 2 ** 24  # disable lazy parser in old hg
  1826     mercurial.revlog._prereadsize = 2 ** 24  # disable lazy parser in old hg
  1827     n = scmutil.revsingle(repo, rev).node()
  1827     n = scmutil.revsingle(repo, rev).node()
  1828 
  1828 
  1829     cl = revlog(getsvfs(repo), indexfile=b"00changelog.i")
  1829     try:
       
  1830         cl = revlog(getsvfs(repo), radix=b"00changelog")
       
  1831     except TypeError:
       
  1832         cl = revlog(getsvfs(repo), indexfile=b"00changelog.i")
  1830 
  1833 
  1831     def d():
  1834     def d():
  1832         cl.rev(n)
  1835         cl.rev(n)
  1833         clearcaches(cl)
  1836         clearcaches(cl)
  1834 
  1837 
  2608 
  2611 
  2609     rl = cmdutil.openrevlog(repo, b'perfrevlogindex', file_, opts)
  2612     rl = cmdutil.openrevlog(repo, b'perfrevlogindex', file_, opts)
  2610 
  2613 
  2611     opener = getattr(rl, 'opener')  # trick linter
  2614     opener = getattr(rl, 'opener')  # trick linter
  2612     # compat with hg <= 5.8
  2615     # compat with hg <= 5.8
       
  2616     radix = getattr(rl, 'radix', None)
  2613     indexfile = getattr(rl, '_indexfile', None)
  2617     indexfile = getattr(rl, '_indexfile', None)
  2614     if indexfile is None:
  2618     if indexfile is None:
  2615         # compatibility with <= hg-5.8
  2619         # compatibility with <= hg-5.8
  2616         indexfile = getattr(rl, 'indexfile')
  2620         indexfile = getattr(rl, 'indexfile')
  2617     data = opener.read(indexfile)
  2621     data = opener.read(indexfile)
  2639     allrevsrev = list(reversed(allrevs))
  2643     allrevsrev = list(reversed(allrevs))
  2640     allnodes = [rl.node(rev) for rev in range(rllen)]
  2644     allnodes = [rl.node(rev) for rev in range(rllen)]
  2641     allnodesrev = list(reversed(allnodes))
  2645     allnodesrev = list(reversed(allnodes))
  2642 
  2646 
  2643     def constructor():
  2647     def constructor():
  2644         revlog(opener, indexfile=indexfile)
  2648         if radix is not None:
       
  2649             revlog(opener, radix=radix)
       
  2650         else:
       
  2651             # hg <= 5.8
       
  2652             revlog(opener, indexfile=indexfile)
  2645 
  2653 
  2646     def read():
  2654     def read():
  2647         with opener(indexfile) as fh:
  2655         with opener(indexfile) as fh:
  2648             fh.read()
  2656             fh.read()
  2649 
  2657 
  3041         indexfile = getattr(orig, 'indexfile')
  3049         indexfile = getattr(orig, 'indexfile')
  3042     origindexpath = orig.opener.join(indexfile)
  3050     origindexpath = orig.opener.join(indexfile)
  3043 
  3051 
  3044     datafile = getattr(orig, '_datafile', getattr(orig, 'datafile'))
  3052     datafile = getattr(orig, '_datafile', getattr(orig, 'datafile'))
  3045     origdatapath = orig.opener.join(datafile)
  3053     origdatapath = orig.opener.join(datafile)
  3046     indexname = 'revlog.i'
  3054     radix = b'revlog'
  3047     dataname = 'revlog.d'
  3055     indexname = b'revlog.i'
       
  3056     dataname = b'revlog.d'
  3048 
  3057 
  3049     tmpdir = tempfile.mkdtemp(prefix='tmp-hgperf-')
  3058     tmpdir = tempfile.mkdtemp(prefix='tmp-hgperf-')
  3050     try:
  3059     try:
  3051         # copy the data file in a temporary directory
  3060         # copy the data file in a temporary directory
  3052         ui.debug('copying data in %s\n' % tmpdir)
  3061         ui.debug('copying data in %s\n' % tmpdir)
  3067         # instantiate a new revlog from the temporary copy
  3076         # instantiate a new revlog from the temporary copy
  3068         ui.debug('truncating adding to be rewritten\n')
  3077         ui.debug('truncating adding to be rewritten\n')
  3069         vfs = vfsmod.vfs(tmpdir)
  3078         vfs = vfsmod.vfs(tmpdir)
  3070         vfs.options = getattr(orig.opener, 'options', None)
  3079         vfs.options = getattr(orig.opener, 'options', None)
  3071 
  3080 
  3072         dest = revlog(
  3081         try:
  3073             vfs, indexfile=indexname, datafile=dataname, **revlogkwargs
  3082             dest = revlog(vfs, radix=radix, **revlogkwargs)
  3074         )
  3083         except TypeError:
       
  3084             dest = revlog(
       
  3085                 vfs, indexfile=indexname, datafile=dataname, **revlogkwargs
       
  3086             )
  3075         if dest._inline:
  3087         if dest._inline:
  3076             raise error.Abort('not supporting inline revlog (yet)')
  3088             raise error.Abort('not supporting inline revlog (yet)')
  3077         # make sure internals are initialized
  3089         # make sure internals are initialized
  3078         dest.revision(len(dest) - 1)
  3090         dest.revision(len(dest) - 1)
  3079         yield dest
  3091         yield dest