changeset 80:5b7a444c794a

Fix field width for annotate Add blame
author mpm@selenic.com
date Tue, 17 May 2005 01:22:50 -0800
parents 837d473d54d5
children 17884f79d59d
files hg
diffstat 1 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hg	Tue May 17 01:12:30 2005 -0800
+++ b/hg	Tue May 17 01:22:50 2005 -0800
@@ -212,7 +212,32 @@
         mmap = repo.manifest.read(change[0])
         for f in args:
             for n, l in repo.file(f).annotate(mmap[f]):
-                sys.stdout.write("%s: %s"%(n, l))
+                sys.stdout.write("% 6s:%s"%(n, l))
+
+elif cmd == "blame":
+    aoptions = {}
+    opts = [('r', 'revision', '', 'revision')]
+    args = fancyopts.fancyopts(args, opts, aoptions,
+                               'hg blame [-r id] [files]')
+    if args:
+        bcache = {}
+        node = repo.current
+        if aoptions['revision']:
+            node = repo.changelog.lookup(aoptions['revision'])
+        change = repo.changelog.read(node)
+        mmap = repo.manifest.read(change[0])
+        for f in args:
+            for n, l in repo.file(f).annotate(mmap[f]):
+                try:
+                    name = bcache[n]
+                except KeyError:
+                    cl = repo.changelog.read(repo.changelog.node(n))
+                    name = cl[1]
+                    f = name.find('@')
+                    if f >= 0:
+                        name = name[:f]
+                    bcache[n] = name
+                sys.stdout.write("% 10s:%s"%(name, l))
 
 elif cmd == "export":
     node = repo.lookup(args[0])