##// END OF EJS Templates
Convert hg annotate to context api
Matt Mackall -
r2566:d8560b45 default
parent child Browse files
Show More
@@ -701,15 +701,18 b' def annotate(ui, repo, *pats, **opts):'
701 701
702 702 ucache = {}
703 703 def getname(rev):
704 cl = repo.changelog.read(repo.changelog.node(rev))
705 return trimuser(ui, cl[1], rev, ucache)
704 try:
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 711 dcache = {}
708 712 def getdate(rev):
709 713 datestr = dcache.get(rev)
710 714 if datestr is None:
711 cl = repo.changelog.read(repo.changelog.node(rev))
712 datestr = dcache[rev] = util.datestr(cl[2])
715 datestr = dcache[rev] = util.datestr(repo.changectx(rev).date())
713 716 return datestr
714 717
715 718 if not pats:
@@ -720,20 +723,15 b' def annotate(ui, repo, *pats, **opts):'
720 723 if not opts['user'] and not opts['changeset'] and not opts['date']:
721 724 opts['number'] = 1
722 725
723 if opts['rev']:
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])
726 ctx = repo.changectx(opts['rev'] or repo.dirstate.parents()[0])
729 727
730 728 for src, abs, rel, exact in walk(repo, pats, opts, node=node):
731 f = repo.file(abs)
732 if not opts['text'] and util.binary(f.read(mmap[abs])):
729 fctx = ctx.filectx(abs)
730 if not opts['text'] and util.binary(fctx.data()):
733 731 ui.write(_("%s: binary file\n") % ((pats and rel) or abs))
734 732 continue
735 733
736 lines = f.annotate(mmap[abs])
734 lines = fctx.annotate()
737 735 pieces = []
738 736
739 737 for o, f in opmap:
@@ -119,3 +119,6 b' class filectx(object):'
119 119 # hard for renames
120 120 c = self._filelog.children(self._filenode)
121 121 return [ filectx(self._repo, self._path, fileid=x) for x in c ]
122
123 def annotate(self):
124 return self._filelog.annotate(self._filenode)
General Comments 0
You need to be logged in to leave comments. Login now