mercurial/hgweb/hgweb_mod.py
changeset 3166 3466bd7b9754
parent 3126 cff3c58a5766
child 3168 fc379b91f602
equal deleted inserted replaced
3165:5c93dd0ae413 3166:3466bd7b9754
   389                      child=self.siblings(fl.children(n), fl.rev, file=f),
   389                      child=self.siblings(fl.children(n), fl.rev, file=f),
   390                      rename=self.renamelink(fl, n),
   390                      rename=self.renamelink(fl, n),
   391                      permissions=self.repo.manifest.read(mfn).execf(f))
   391                      permissions=self.repo.manifest.read(mfn).execf(f))
   392 
   392 
   393     def fileannotate(self, f, node):
   393     def fileannotate(self, f, node):
   394         bcache = {}
   394         fctx = self.repo.filectx(f, fileid=node)
   395         ncache = {}
   395         n = fctx.filenode()
   396         fl = self.repo.file(f)
   396         fl = fctx.filelog()
   397         n = fl.lookup(node)
       
   398         node = hex(n)
       
   399         changerev = fl.linkrev(n)
       
   400 
       
   401         cl = self.repo.changelog
       
   402         cn = cl.node(changerev)
       
   403         cs = cl.read(cn)
       
   404         mfn = cs[0]
       
   405 
   397 
   406         def annotate(**map):
   398         def annotate(**map):
   407             parity = 0
   399             parity = 0
   408             last = None
   400             last = None
   409             for r, l in fl.annotate(n):
   401             for f, l in fctx.annotate():
   410                 try:
   402                 cnode = f.node()
   411                     cnode = ncache[r]
   403                 name = self.repo.ui.shortuser(f.user())
   412                 except KeyError:
       
   413                     cnode = ncache[r] = self.repo.changelog.node(r)
       
   414 
       
   415                 try:
       
   416                     name = bcache[r]
       
   417                 except KeyError:
       
   418                     cl = self.repo.changelog.read(cnode)
       
   419                     bcache[r] = name = self.repo.ui.shortuser(cl[1])
       
   420 
   404 
   421                 if last != cnode:
   405                 if last != cnode:
   422                     parity = 1 - parity
   406                     parity = 1 - parity
   423                     last = cnode
   407                     last = cnode
   424 
   408 
   425                 yield {"parity": parity,
   409                 yield {"parity": parity,
   426                        "node": hex(cnode),
   410                        "node": hex(cnode),
   427                        "rev": r,
   411                        "rev": f.rev(),
   428                        "author": name,
   412                        "author": name,
   429                        "file": f,
   413                        "file": f.path(),
   430                        "line": l}
   414                        "line": l}
   431 
   415 
   432         yield self.t("fileannotate",
   416         yield self.t("fileannotate",
   433                      file=f,
   417                      file=f,
   434                      filenode=node,
   418                      filenode=node,
   435                      annotate=annotate,
   419                      annotate=annotate,
   436                      path=_up(f),
   420                      path=_up(f),
   437                      rev=changerev,
   421                      rev=fctx.rev(),
   438                      node=hex(cn),
   422                      node=hex(n),
   439                      manifest=hex(mfn),
   423                      manifest=hex(fctx.changectx().changeset()[0]),
   440                      author=cs[1],
   424                      author=fctx.user(),
   441                      date=cs[2],
   425                      date=fctx.date(),
   442                      rename=self.renamelink(fl, n),
   426                      rename=self.renamelink(fl, n),
   443                      parent=self.siblings(fl.parents(n), fl.rev, file=f),
   427                      parent=self.siblings(fl.parents(n), fl.rev, file=f),
   444                      child=self.siblings(fl.children(n), fl.rev, file=f),
   428                      child=self.siblings(fl.children(n), fl.rev, file=f),
   445                      permissions=self.repo.manifest.read(mfn).execf(f))
   429                      permissions=fctx.manifest().execf(f))
   446 
   430 
   447     def manifest(self, mnode, path):
   431     def manifest(self, mnode, path):
   448         man = self.repo.manifest
   432         man = self.repo.manifest
   449         mn = man.lookup(mnode)
   433         mn = man.lookup(mnode)
   450         mnode = hex(mn)
   434         mnode = hex(mn)