Commit a7049dc8 authored by mpm@selenic.com's avatar mpm@selenic.com
Browse files

Teach annotate about binary files

parent 22571b8d35d3
......@@ -71,8 +71,13 @@ annotate [-r <rev> -u -n -c] [files ...]::
This command is useful to discover who did a change or when a change took
place.
Without the -a option, annotate will avoid processing files it
detects as binary. With -a, annotate will generate an annotation
anyway, probably with undesirable results.
options:
-a, --text treat all files as text
-I, --include <pat> include names matching the given patterns
-X, --exclude <pat> exclude names matching the given patterns
-r, --revision <rev> annotate the specified revision
......
......@@ -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'),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment