comparison mercurial/commands.py @ 22311:5038dee5bdd6

debugrevlog: add chainlen column to --dump output
author Sune Foldager <cryo@cyanite.org>
date Sat, 30 Aug 2014 11:57:46 +0200
parents aabf367306d5
children 188b8aa2120b
comparison
equal deleted inserted replaced
22310:aabf367306d5 22311:5038dee5bdd6
2534 r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts) 2534 r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts)
2535 2535
2536 if opts.get("dump"): 2536 if opts.get("dump"):
2537 numrevs = len(r) 2537 numrevs = len(r)
2538 ui.write("# rev p1rev p2rev start end deltastart base p1 p2" 2538 ui.write("# rev p1rev p2rev start end deltastart base p1 p2"
2539 " rawsize totalsize compression heads\n") 2539 " rawsize totalsize compression heads chainlen\n")
2540 ts = 0 2540 ts = 0
2541 heads = set() 2541 heads = set()
2542 rindex = r.index
2543
2544 def chainbaseandlen(rev):
2545 clen = 0
2546 base = rindex[rev][3]
2547 while base != rev:
2548 clen += 1
2549 rev = base
2550 base = rindex[rev][3]
2551 return base, clen
2552
2542 for rev in xrange(numrevs): 2553 for rev in xrange(numrevs):
2543 dbase = r.deltaparent(rev) 2554 dbase = r.deltaparent(rev)
2544 if dbase == -1: 2555 if dbase == -1:
2545 dbase = rev 2556 dbase = rev
2546 cbase = r.chainbase(rev) 2557 cbase, clen = chainbaseandlen(rev)
2547 p1, p2 = r.parentrevs(rev) 2558 p1, p2 = r.parentrevs(rev)
2548 rs = r.rawsize(rev) 2559 rs = r.rawsize(rev)
2549 ts = ts + rs 2560 ts = ts + rs
2550 heads -= set(r.parentrevs(rev)) 2561 heads -= set(r.parentrevs(rev))
2551 heads.add(rev) 2562 heads.add(rev)
2552 ui.write("%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d %11d %5d\n" % 2563 ui.write("%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d "
2564 "%11d %5d %8d\n" %
2553 (rev, p1, p2, r.start(rev), r.end(rev), 2565 (rev, p1, p2, r.start(rev), r.end(rev),
2554 r.start(dbase), r.start(cbase), 2566 r.start(dbase), r.start(cbase),
2555 r.start(p1), r.start(p2), 2567 r.start(p1), r.start(p2),
2556 rs, ts, ts / r.end(rev), len(heads))) 2568 rs, ts, ts / r.end(rev), len(heads), clen))
2557 return 0 2569 return 0
2558 2570
2559 v = r.version 2571 v = r.version
2560 format = v & 0xFFFF 2572 format = v & 0xFFFF
2561 flags = [] 2573 flags = []