Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 2566:d8560b458f76
Convert hg annotate to context api
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 28 Jun 2006 17:42:17 -0500 |
parents | 7f78ca2c7977 |
children | 2748253b49c2 |
comparison
equal
deleted
inserted
replaced
2565:7f78ca2c7977 | 2566:d8560b458f76 |
---|---|
699 def getnode(rev): | 699 def getnode(rev): |
700 return short(repo.changelog.node(rev)) | 700 return short(repo.changelog.node(rev)) |
701 | 701 |
702 ucache = {} | 702 ucache = {} |
703 def getname(rev): | 703 def getname(rev): |
704 cl = repo.changelog.read(repo.changelog.node(rev)) | 704 try: |
705 return trimuser(ui, cl[1], rev, ucache) | 705 return ucache[rev] |
706 except: | |
707 u = trimuser(ui, repo.changectx(rev).user(), rev, ucache) | |
708 ucache[rev] = u | |
709 return u | |
706 | 710 |
707 dcache = {} | 711 dcache = {} |
708 def getdate(rev): | 712 def getdate(rev): |
709 datestr = dcache.get(rev) | 713 datestr = dcache.get(rev) |
710 if datestr is None: | 714 if datestr is None: |
711 cl = repo.changelog.read(repo.changelog.node(rev)) | 715 datestr = dcache[rev] = util.datestr(repo.changectx(rev).date()) |
712 datestr = dcache[rev] = util.datestr(cl[2]) | |
713 return datestr | 716 return datestr |
714 | 717 |
715 if not pats: | 718 if not pats: |
716 raise util.Abort(_('at least one file name or pattern required')) | 719 raise util.Abort(_('at least one file name or pattern required')) |
717 | 720 |
718 opmap = [['user', getname], ['number', str], ['changeset', getnode], | 721 opmap = [['user', getname], ['number', str], ['changeset', getnode], |
719 ['date', getdate]] | 722 ['date', getdate]] |
720 if not opts['user'] and not opts['changeset'] and not opts['date']: | 723 if not opts['user'] and not opts['changeset'] and not opts['date']: |
721 opts['number'] = 1 | 724 opts['number'] = 1 |
722 | 725 |
723 if opts['rev']: | 726 ctx = repo.changectx(opts['rev'] or repo.dirstate.parents()[0]) |
724 node = repo.changelog.lookup(opts['rev']) | |
725 else: | |
726 node = repo.dirstate.parents()[0] | |
727 change = repo.changelog.read(node) | |
728 mmap = repo.manifest.read(change[0]) | |
729 | 727 |
730 for src, abs, rel, exact in walk(repo, pats, opts, node=node): | 728 for src, abs, rel, exact in walk(repo, pats, opts, node=node): |
731 f = repo.file(abs) | 729 fctx = ctx.filectx(abs) |
732 if not opts['text'] and util.binary(f.read(mmap[abs])): | 730 if not opts['text'] and util.binary(fctx.data()): |
733 ui.write(_("%s: binary file\n") % ((pats and rel) or abs)) | 731 ui.write(_("%s: binary file\n") % ((pats and rel) or abs)) |
734 continue | 732 continue |
735 | 733 |
736 lines = f.annotate(mmap[abs]) | 734 lines = fctx.annotate() |
737 pieces = [] | 735 pieces = [] |
738 | 736 |
739 for o, f in opmap: | 737 for o, f in opmap: |
740 if opts[o]: | 738 if opts[o]: |
741 l = [f(n) for n, dummy in lines] | 739 l = [f(n) for n, dummy in lines] |