mercurial/commands.py
changeset 714 29fcd195e056
parent 712 b4f0fad0ea64
child 715 938dd667ca21
equal deleted inserted replaced
713:7c385bd5f993 714:29fcd195e056
   309     else:
   309     else:
   310         (c, a, d, u) = repo.changes(None, None)
   310         (c, a, d, u) = repo.changes(None, None)
   311     repo.add(u)
   311     repo.add(u)
   312     repo.remove(d)
   312     repo.remove(d)
   313 
   313 
   314 def annotate(u, repo, file1, *files, **ops):
   314 def annotate(ui, repo, file1, *files, **opts):
   315     """show changeset information per file line"""
   315     """show changeset information per file line"""
   316     def getnode(rev):
   316     def getnode(rev):
   317         return hg.short(repo.changelog.node(rev))
   317         return hg.short(repo.changelog.node(rev))
   318 
   318 
   319     def getname(rev):
   319     def getname(rev):
   331             bcache[rev] = name
   331             bcache[rev] = name
   332             return name
   332             return name
   333 
   333 
   334     bcache = {}
   334     bcache = {}
   335     opmap = [['user', getname], ['number', str], ['changeset', getnode]]
   335     opmap = [['user', getname], ['number', str], ['changeset', getnode]]
   336     if not ops['user'] and not ops['changeset']:
   336     if not opts['user'] and not opts['changeset']:
   337         ops['number'] = 1
   337         opts['number'] = 1
   338 
   338 
   339     node = repo.dirstate.parents()[0]
   339     if opts['revision']:
   340     if ops['revision']:
   340         node = repo.changelog.lookup(opts['revision'])
   341         node = repo.changelog.lookup(ops['revision'])
   341     else:
       
   342         node = repo.dirstate.parents()[0]
   342     change = repo.changelog.read(node)
   343     change = repo.changelog.read(node)
   343     mmap = repo.manifest.read(change[0])
   344     mmap = repo.manifest.read(change[0])
   344     for f in relpath(repo, (file1,) + files):
   345     for f in relpath(repo, (file1,) + files):
   345         lines = repo.file(f).annotate(mmap[f])
   346         lines = repo.file(f).annotate(mmap[f])
   346         pieces = []
   347         pieces = []
   347 
   348 
   348         for o, f in opmap:
   349         for o, f in opmap:
   349             if ops[o]:
   350             if opts[o]:
   350                 l = [f(n) for n, dummy in lines]
   351                 l = [f(n) for n, dummy in lines]
   351                 m = max(map(len, l))
   352                 m = max(map(len, l))
   352                 pieces.append(["%*s" % (m, x) for x in l])
   353                 pieces.append(["%*s" % (m, x) for x in l])
   353 
   354 
   354         for p, l in zip(zip(*pieces), lines):
   355         for p, l in zip(zip(*pieces), lines):
   355             u.write(" ".join(p) + ": " + l[1])
   356             ui.write("%s: %s" % (" ".join(p), l[1]))
   356 
   357 
   357 def cat(ui, repo, file1, rev=None, **opts):
   358 def cat(ui, repo, file1, rev=None, **opts):
   358     """output the latest or given revision of a file"""
   359     """output the latest or given revision of a file"""
   359     r = repo.file(relpath(repo, [file1])[0])
   360     r = repo.file(relpath(repo, [file1])[0])
   360     if rev:
   361     if rev: