~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to weave.py

  • Committer: Martin Pool
  • Date: 2005-07-01 03:08:44 UTC
  • mto: This revision was merged to the branch mainline in revision 852.
  • Revision ID: mbp@sourcefrog.net-20050701030844-ede4e35066a45122
Add weave info command.

Show diffs side-by-side

added added

removed removed

Lines of Context:
457
457
 
458
458
 
459
459
 
 
460
def weave_info(filename, out):
 
461
    """Show some text information about the weave."""
 
462
    from weavefile import read_weave
 
463
    wf = file(filename, 'rb')
 
464
    w = read_weave(wf)
 
465
    # FIXME: doesn't work on pipes
 
466
    weave_size = wf.tell()
 
467
    print >>out, "weave file size %d bytes" % weave_size
 
468
    print >>out, "weave contains %d versions" % len(w._v)
 
469
 
 
470
    total = 0
 
471
    print ' %8s %8s %8s' % ('version', 'lines', 'bytes')
 
472
    print ' -------- -------- --------'
 
473
    for i in range(len(w._v)):
 
474
        text = w.get(i)
 
475
        lines = len(text)
 
476
        bytes = sum((len(a) for a in text))
 
477
        print ' %8d %8d %8d' % (i, lines, bytes)
 
478
        total += bytes
 
479
 
 
480
    print >>out, "versions total %d bytes" % total
 
481
    print >>out, "compression ratio %.3f" % (float(total)/float(weave_size))
 
482
    
 
483
 
460
484
 
461
485
def main(argv):
462
486
    import sys
492
516
            else:
493
517
                print '%5d | %s' % (origin, text)
494
518
                lasto = origin
 
519
    elif cmd == 'info':
 
520
        weave_info(argv[2], sys.stdout)
495
521
    else:
496
522
        raise ValueError('unknown command %r' % cmd)
497
523