~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

- add a basic annotate built-in command

Show diffs side-by-side

added added

removed removed

Lines of Context:
1440
1440
                sys.stdout.write(t.as_short_text())
1441
1441
        finally:
1442
1442
            b.unlock()
 
1443
 
 
1444
 
 
1445
class cmd_annotate(Command):
 
1446
    """Show the origin of each line in a file.
 
1447
 
 
1448
    This prints out the given file with an annotation on the 
 
1449
    left side indicating which revision, author and date introduced the 
 
1450
    change.
 
1451
    """
 
1452
    # TODO: annotate directories; showing when each file was last changed
 
1453
    # TODO: annotate a previous version of a file
 
1454
    aliases = ['blame', 'praise']
 
1455
    takes_args = ['filename']
 
1456
 
 
1457
    def run(self, filename):
 
1458
        from bzrlib.annotate import annotate_file
 
1459
        b = Branch.open_containing(filename)
 
1460
        b.lock_read()
 
1461
        try:
 
1462
            rp = b.relpath(filename)
 
1463
            tree = b.revision_tree(b.last_revision())
 
1464
            file_id = tree.inventory.path2id(rp)
 
1465
            file_version = tree.inventory[file_id].revision
 
1466
            annotate_file(b, file_version, file_id, sys.stdout)
 
1467
        finally:
 
1468
            b.unlock()