--- a/mercurial/commands.py Wed Aug 17 21:00:11 2016 -0700
+++ b/mercurial/commands.py Wed Aug 17 21:01:02 2016 -0700
@@ -1858,107 +1858,6 @@
with repo.wlock(False):
return cmdutil.copy(ui, repo, pats, opts)
-@command('debugdeltachain',
- debugrevlogopts + formatteropts,
- _('-c|-m|FILE'),
- optionalrepo=True)
-def debugdeltachain(ui, repo, file_=None, **opts):
- """dump information about delta chains in a revlog
-
- Output can be templatized. Available template keywords are:
-
- :``rev``: revision number
- :``chainid``: delta chain identifier (numbered by unique base)
- :``chainlen``: delta chain length to this revision
- :``prevrev``: previous revision in delta chain
- :``deltatype``: role of delta / how it was computed
- :``compsize``: compressed size of revision
- :``uncompsize``: uncompressed size of revision
- :``chainsize``: total size of compressed revisions in chain
- :``chainratio``: total chain size divided by uncompressed revision size
- (new delta chains typically start at ratio 2.00)
- :``lindist``: linear distance from base revision in delta chain to end
- of this revision
- :``extradist``: total size of revisions not part of this delta chain from
- base of delta chain to end of this revision; a measurement
- of how much extra data we need to read/seek across to read
- the delta chain for this revision
- :``extraratio``: extradist divided by chainsize; another representation of
- how much unrelated data is needed to load this delta chain
- """
- r = cmdutil.openrevlog(repo, 'debugdeltachain', file_, opts)
- index = r.index
- generaldelta = r.version & revlog.REVLOGGENERALDELTA
-
- def revinfo(rev):
- e = index[rev]
- compsize = e[1]
- uncompsize = e[2]
- chainsize = 0
-
- if generaldelta:
- if e[3] == e[5]:
- deltatype = 'p1'
- elif e[3] == e[6]:
- deltatype = 'p2'
- elif e[3] == rev - 1:
- deltatype = 'prev'
- elif e[3] == rev:
- deltatype = 'base'
- else:
- deltatype = 'other'
- else:
- if e[3] == rev:
- deltatype = 'base'
- else:
- deltatype = 'prev'
-
- chain = r._deltachain(rev)[0]
- for iterrev in chain:
- e = index[iterrev]
- chainsize += e[1]
-
- return compsize, uncompsize, deltatype, chain, chainsize
-
- fm = ui.formatter('debugdeltachain', opts)
-
- fm.plain(' rev chain# chainlen prev delta '
- 'size rawsize chainsize ratio lindist extradist '
- 'extraratio\n')
-
- chainbases = {}
- for rev in r:
- comp, uncomp, deltatype, chain, chainsize = revinfo(rev)
- chainbase = chain[0]
- chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
- basestart = r.start(chainbase)
- revstart = r.start(rev)
- lineardist = revstart + comp - basestart
- extradist = lineardist - chainsize
- try:
- prevrev = chain[-2]
- except IndexError:
- prevrev = -1
-
- chainratio = float(chainsize) / float(uncomp)
- extraratio = float(extradist) / float(chainsize)
-
- fm.startitem()
- fm.write('rev chainid chainlen prevrev deltatype compsize '
- 'uncompsize chainsize chainratio lindist extradist '
- 'extraratio',
- '%7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f\n',
- rev, chainid, len(chain), prevrev, deltatype, comp,
- uncomp, chainsize, chainratio, lineardist, extradist,
- extraratio,
- rev=rev, chainid=chainid, chainlen=len(chain),
- prevrev=prevrev, deltatype=deltatype, compsize=comp,
- uncompsize=uncomp, chainsize=chainsize,
- chainratio=chainratio, lindist=lineardist,
- extradist=extradist, extraratio=extraratio)
-
- fm.end()
-
@command('debuginstall', [] + formatteropts, '', norepo=True)
def debuginstall(ui, **opts):
'''test Mercurial installation
--- a/mercurial/debugcommands.py Wed Aug 17 21:00:11 2016 -0700
+++ b/mercurial/debugcommands.py Wed Aug 17 21:01:02 2016 -0700
@@ -748,3 +748,104 @@
if pp[1] != nullid:
ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i))
ui.write("}\n")
+
+@command('debugdeltachain',
+ commands.debugrevlogopts + commands.formatteropts,
+ _('-c|-m|FILE'),
+ optionalrepo=True)
+def debugdeltachain(ui, repo, file_=None, **opts):
+ """dump information about delta chains in a revlog
+
+ Output can be templatized. Available template keywords are:
+
+ :``rev``: revision number
+ :``chainid``: delta chain identifier (numbered by unique base)
+ :``chainlen``: delta chain length to this revision
+ :``prevrev``: previous revision in delta chain
+ :``deltatype``: role of delta / how it was computed
+ :``compsize``: compressed size of revision
+ :``uncompsize``: uncompressed size of revision
+ :``chainsize``: total size of compressed revisions in chain
+ :``chainratio``: total chain size divided by uncompressed revision size
+ (new delta chains typically start at ratio 2.00)
+ :``lindist``: linear distance from base revision in delta chain to end
+ of this revision
+ :``extradist``: total size of revisions not part of this delta chain from
+ base of delta chain to end of this revision; a measurement
+ of how much extra data we need to read/seek across to read
+ the delta chain for this revision
+ :``extraratio``: extradist divided by chainsize; another representation of
+ how much unrelated data is needed to load this delta chain
+ """
+ r = cmdutil.openrevlog(repo, 'debugdeltachain', file_, opts)
+ index = r.index
+ generaldelta = r.version & revlog.REVLOGGENERALDELTA
+
+ def revinfo(rev):
+ e = index[rev]
+ compsize = e[1]
+ uncompsize = e[2]
+ chainsize = 0
+
+ if generaldelta:
+ if e[3] == e[5]:
+ deltatype = 'p1'
+ elif e[3] == e[6]:
+ deltatype = 'p2'
+ elif e[3] == rev - 1:
+ deltatype = 'prev'
+ elif e[3] == rev:
+ deltatype = 'base'
+ else:
+ deltatype = 'other'
+ else:
+ if e[3] == rev:
+ deltatype = 'base'
+ else:
+ deltatype = 'prev'
+
+ chain = r._deltachain(rev)[0]
+ for iterrev in chain:
+ e = index[iterrev]
+ chainsize += e[1]
+
+ return compsize, uncompsize, deltatype, chain, chainsize
+
+ fm = ui.formatter('debugdeltachain', opts)
+
+ fm.plain(' rev chain# chainlen prev delta '
+ 'size rawsize chainsize ratio lindist extradist '
+ 'extraratio\n')
+
+ chainbases = {}
+ for rev in r:
+ comp, uncomp, deltatype, chain, chainsize = revinfo(rev)
+ chainbase = chain[0]
+ chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
+ basestart = r.start(chainbase)
+ revstart = r.start(rev)
+ lineardist = revstart + comp - basestart
+ extradist = lineardist - chainsize
+ try:
+ prevrev = chain[-2]
+ except IndexError:
+ prevrev = -1
+
+ chainratio = float(chainsize) / float(uncomp)
+ extraratio = float(extradist) / float(chainsize)
+
+ fm.startitem()
+ fm.write('rev chainid chainlen prevrev deltatype compsize '
+ 'uncompsize chainsize chainratio lindist extradist '
+ 'extraratio',
+ '%7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f\n',
+ rev, chainid, len(chain), prevrev, deltatype, comp,
+ uncomp, chainsize, chainratio, lineardist, extradist,
+ extraratio,
+ rev=rev, chainid=chainid, chainlen=len(chain),
+ prevrev=prevrev, deltatype=deltatype, compsize=comp,
+ uncompsize=uncomp, chainsize=chainsize,
+ chainratio=chainratio, lindist=lineardist,
+ extradist=extradist, extraratio=extraratio)
+
+ fm.end()