mercurial/revlogutils/debug.py
changeset 49661 511106bcb16c
parent 49660 bd3b6f363fb9
child 49662 7aea9babac5d
equal deleted inserted replaced
49660:bd3b6f363fb9 49661:511106bcb16c
   300     numfull = 0
   300     numfull = 0
   301     # intermediate snapshot against a prior snapshot
   301     # intermediate snapshot against a prior snapshot
   302     numsemi = 0
   302     numsemi = 0
   303     # snapshot count per depth
   303     # snapshot count per depth
   304     numsnapdepth = collections.defaultdict(lambda: 0)
   304     numsnapdepth = collections.defaultdict(lambda: 0)
       
   305     # number of snapshots with a non-ancestor delta
       
   306     numsnapdepth_nad = collections.defaultdict(lambda: 0)
   305     # delta against previous revision
   307     # delta against previous revision
   306     numprev = 0
   308     numprev = 0
       
   309     # delta against prev, where prev is a non-ancestor
       
   310     numprev_nad = 0
   307     # delta against first or second parent (not prev)
   311     # delta against first or second parent (not prev)
   308     nump1 = 0
   312     nump1 = 0
   309     nump2 = 0
   313     nump2 = 0
   310     # delta against neither prev nor parents
   314     # delta against neither prev nor parents
   311     numother = 0
   315     numother = 0
       
   316     # delta against other that is a non-ancestor
       
   317     numother_nad = 0
   312     # delta against prev that are also first or second parent
   318     # delta against prev that are also first or second parent
   313     # (details of `numprev`)
   319     # (details of `numprev`)
   314     nump1prev = 0
   320     nump1prev = 0
   315     nump2prev = 0
   321     nump2prev = 0
   316 
   322 
   356                 numfull += 1
   362                 numfull += 1
   357                 numsnapdepth[0] += 1
   363                 numsnapdepth[0] += 1
   358                 addsize(size, fullsize)
   364                 addsize(size, fullsize)
   359                 addsize(size, snapsizedepth[0])
   365                 addsize(size, snapsizedepth[0])
   360         else:
   366         else:
       
   367             nad = (
       
   368                 delta != p1 and delta != p2 and not r.isancestorrev(delta, rev)
       
   369             )
   361             chainlengths.append(chainlengths[delta] + 1)
   370             chainlengths.append(chainlengths[delta] + 1)
   362             baseaddr = chainbases[delta]
   371             baseaddr = chainbases[delta]
   363             revaddr = r.start(rev)
   372             revaddr = r.start(rev)
   364             chainbases.append(baseaddr)
   373             chainbases.append(baseaddr)
   365             chainspans.append((revaddr - baseaddr) + size)
   374             chainspans.append((revaddr - baseaddr) + size)
   369             elif r.issnapshot(rev):
   378             elif r.issnapshot(rev):
   370                 addsize(size, semisize)
   379                 addsize(size, semisize)
   371                 numsemi += 1
   380                 numsemi += 1
   372                 depth = r.snapshotdepth(rev)
   381                 depth = r.snapshotdepth(rev)
   373                 numsnapdepth[depth] += 1
   382                 numsnapdepth[depth] += 1
       
   383                 if nad:
       
   384                     numsnapdepth_nad[depth] += 1
   374                 addsize(size, snapsizedepth[depth])
   385                 addsize(size, snapsizedepth[depth])
   375             else:
   386             else:
   376                 addsize(size, deltasize)
   387                 addsize(size, deltasize)
   377                 if delta == rev - 1:
   388                 if delta == rev - 1:
   378                     numprev += 1
   389                     numprev += 1
   379                     if delta == p1:
   390                     if delta == p1:
   380                         nump1prev += 1
   391                         nump1prev += 1
   381                     elif delta == p2:
   392                     elif delta == p2:
   382                         nump2prev += 1
   393                         nump2prev += 1
       
   394                     elif nad:
       
   395                         numprev_nad += 1
   383                 elif delta == p1:
   396                 elif delta == p1:
   384                     nump1 += 1
   397                     nump1 += 1
   385                 elif delta == p2:
   398                 elif delta == p2:
   386                     nump2 += 1
   399                     nump2 += 1
   387                 elif delta != nodemod.nullrev:
   400                 elif delta != nodemod.nullrev:
   388                     numother += 1
   401                     numother += 1
       
   402                     numother_nad += 1
   389 
   403 
   390         # Obtain data on the raw chunks in the revlog.
   404         # Obtain data on the raw chunks in the revlog.
   391         if util.safehasattr(r, '_getsegmentforrevs'):
   405         if util.safehasattr(r, '_getsegmentforrevs'):
   392             segment = r._getsegmentforrevs(rev, rev)[1]
   406             segment = r._getsegmentforrevs(rev, rev)[1]
   393         else:
   407         else:
   408     for size in (datasize, fullsize, semisize, deltasize):
   422     for size in (datasize, fullsize, semisize, deltasize):
   409         if size[0] is None:
   423         if size[0] is None:
   410             size[0] = 0
   424             size[0] = 0
   411 
   425 
   412     numdeltas = numrevs - numfull - numempty - numsemi
   426     numdeltas = numrevs - numfull - numempty - numsemi
   413     numoprev = numprev - nump1prev - nump2prev
   427     numoprev = numprev - nump1prev - nump2prev - numprev_nad
       
   428     num_other_ancestors = numother - numother_nad
   414     totalrawsize = datasize[2]
   429     totalrawsize = datasize[2]
   415     datasize[2] /= numrevs
   430     datasize[2] /= numrevs
   416     fulltotal = fullsize[2]
   431     fulltotal = fullsize[2]
   417     if numfull == 0:
   432     if numfull == 0:
   418         fullsize[2] = 0
   433         fullsize[2] = 0
   475     )
   490     )
   476     ui.writenoi18n(
   491     ui.writenoi18n(
   477         b'    snapshot  : ' + fmt % pcfmt(numfull + numsemi, numrevs)
   492         b'    snapshot  : ' + fmt % pcfmt(numfull + numsemi, numrevs)
   478     )
   493     )
   479     for depth in sorted(numsnapdepth):
   494     for depth in sorted(numsnapdepth):
   480         ui.write(
   495         base = b'      lvl-%-3d :       ' % depth
   481             (b'      lvl-%-3d :       ' % depth)
   496         count = fmt % pcfmt(numsnapdepth[depth], numrevs)
   482             + fmt % pcfmt(numsnapdepth[depth], numrevs)
   497         pieces = [base, count]
   483         )
   498         if numsnapdepth_nad[depth]:
       
   499             pieces[-1] = count = count[:-1]  # drop the final '\n'
       
   500             more = b'  non-ancestor-bases: '
       
   501             anc_count = fmt
       
   502             anc_count %= pcfmt(numsnapdepth_nad[depth], numsnapdepth[depth])
       
   503             pieces.append(more)
       
   504             pieces.append(anc_count)
       
   505         ui.write(b''.join(pieces))
   484     ui.writenoi18n(b'    deltas    : ' + fmt % pcfmt(numdeltas, numrevs))
   506     ui.writenoi18n(b'    deltas    : ' + fmt % pcfmt(numdeltas, numrevs))
   485     ui.writenoi18n(b'revision size : ' + fmt2 % totalsize)
   507     ui.writenoi18n(b'revision size : ' + fmt2 % totalsize)
   486     ui.writenoi18n(
   508     ui.writenoi18n(
   487         b'    snapshot  : ' + fmt % pcfmt(fulltotal + semitotal, totalsize)
   509         b'    snapshot  : ' + fmt % pcfmt(fulltotal + semitotal, totalsize)
   488     )
   510     )
   559             )
   581             )
   560             ui.writenoi18n(
   582             ui.writenoi18n(
   561                 b'    where prev = p2  : ' + fmt2 % pcfmt(nump2prev, numprev)
   583                 b'    where prev = p2  : ' + fmt2 % pcfmt(nump2prev, numprev)
   562             )
   584             )
   563             ui.writenoi18n(
   585             ui.writenoi18n(
   564                 b'    other            : ' + fmt2 % pcfmt(numoprev, numprev)
   586                 b'    other-ancestor   : ' + fmt2 % pcfmt(numoprev, numprev)
       
   587             )
       
   588             ui.writenoi18n(
       
   589                 b'    unrelated        : ' + fmt2 % pcfmt(numoprev, numprev)
   565             )
   590             )
   566         if gdelta:
   591         if gdelta:
   567             ui.writenoi18n(
   592             ui.writenoi18n(
   568                 b'deltas against p1    : ' + fmt % pcfmt(nump1, numdeltas)
   593                 b'deltas against p1    : ' + fmt % pcfmt(nump1, numdeltas)
   569             )
   594             )
   570             ui.writenoi18n(
   595             ui.writenoi18n(
   571                 b'deltas against p2    : ' + fmt % pcfmt(nump2, numdeltas)
   596                 b'deltas against p2    : ' + fmt % pcfmt(nump2, numdeltas)
   572             )
   597             )
   573             ui.writenoi18n(
   598             ui.writenoi18n(
   574                 b'deltas against other : ' + fmt % pcfmt(numother, numdeltas)
   599                 b'deltas against ancs  : '
   575             )
   600                 + fmt % pcfmt(num_other_ancestors, numdeltas)
       
   601             )
       
   602             ui.writenoi18n(
       
   603                 b'deltas against other : '
       
   604                 + fmt % pcfmt(numother_nad, numdeltas)
       
   605             )