diff mercurial/commands.py @ 1016:836667830fee

Teach annotate about binary files
author mpm@selenic.com
date Tue, 23 Aug 2005 20:21:52 -0700
parents 22571b8d35d3
children 28e2f13ca7c4
line wrap: on
line diff
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -433,12 +433,18 @@ def annotate(ui, repo, *pats, **opts):
         node = repo.dirstate.parents()[0]
     change = repo.changelog.read(node)
     mmap = repo.manifest.read(change[0])
+
     for src, abs, rel, exact in walk(repo, pats, opts):
         if abs not in mmap:
             ui.warn("warning: %s is not in the repository!\n" % rel)
             continue
 
-        lines = repo.file(abs).annotate(mmap[abs])
+        f = repo.file(abs)
+        if not opts['text'] and util.binary(f.read(mmap[abs])):
+            ui.write("%s: binary file\n" % rel)
+            continue
+
+        lines = f.annotate(mmap[abs])
         pieces = []
 
         for o, f in opmap:
@@ -1285,6 +1291,7 @@ table = {
     "^annotate":
         (annotate,
          [('r', 'rev', '', 'revision'),
+          ('a', 'text', None, 'treat all files as text'),
           ('u', 'user', None, 'show user'),
           ('n', 'number', None, 'show revision number'),
           ('c', 'changeset', None, 'show changeset'),