mercurial/hgweb/hgweb_mod.py
changeset 3212 325278542ea8
parent 3208 e7b7906cc47e
child 3218 5c6028778c5a
equal deleted inserted replaced
3211:9a478efc16cc 3212:325278542ea8
   147             to = r.file(f).read(mmap1[f])
   147             to = r.file(f).read(mmap1[f])
   148             tn = None
   148             tn = None
   149             yield diffblock(mdiff.unidiff(to, date1, tn, date2, f,
   149             yield diffblock(mdiff.unidiff(to, date1, tn, date2, f,
   150                                           opts=diffopts), f, tn)
   150                                           opts=diffopts), f, tn)
   151 
   151 
   152     def changelog(self, pos, shortlog=False):
   152     def changelog(self, ctx, shortlog=False):
       
   153         pos = ctx.rev()
   153         def changenav(**map):
   154         def changenav(**map):
   154             def seq(factor, maxchanges=None):
   155             def seq(factor, maxchanges=None):
   155                 if maxchanges:
   156                 if maxchanges:
   156                     yield maxchanges
   157                     yield maxchanges
   157                     if maxchanges >= 20 and maxchanges <= 40:
   158                     if maxchanges >= 20 and maxchanges <= 40:
   272         yield self.t('search',
   273         yield self.t('search',
   273                      query=query,
   274                      query=query,
   274                      node=hex(cl.tip()),
   275                      node=hex(cl.tip()),
   275                      entries=changelist)
   276                      entries=changelist)
   276 
   277 
   277     def changeset(self, nodeid):
   278     def changeset(self, ctx):
   278         ctx = self.repo.changectx(nodeid)
       
   279         n = ctx.node()
   279         n = ctx.node()
   280         parents = ctx.parents()
   280         parents = ctx.parents()
   281         p1 = parents[0].node()
   281         p1 = parents[0].node()
   282 
   282 
   283         files = []
   283         files = []
   300                      changesettag=self.showtag("changesettag",n),
   300                      changesettag=self.showtag("changesettag",n),
   301                      author=ctx.user(),
   301                      author=ctx.user(),
   302                      desc=ctx.description(),
   302                      desc=ctx.description(),
   303                      date=ctx.date(),
   303                      date=ctx.date(),
   304                      files=files,
   304                      files=files,
   305                      archives=self.archivelist(nodeid))
   305                      archives=self.archivelist(hex(n)))
   306 
   306 
   307     def filelog(self, fctx):
   307     def filelog(self, fctx):
   308         f = fctx.path()
   308         f = fctx.path()
   309         cl = self.repo.changelog
   309         cl = self.repo.changelog
   310         fl = fctx.filelog()
   310         fl = fctx.filelog()
   550                  tags = tagentries,
   550                  tags = tagentries,
   551                  shortlog = changelist,
   551                  shortlog = changelist,
   552                  node = hex(self.repo.changelog.tip()),
   552                  node = hex(self.repo.changelog.tip()),
   553                  archives=self.archivelist("tip"))
   553                  archives=self.archivelist("tip"))
   554 
   554 
   555     def filediff(self, file, changeset):
   555     def filediff(self, fctx):
   556         ctx = self.repo.changectx(changeset)
   556         n = fctx.node()
   557         n = ctx.node()
   557         path = fctx.path()
   558         parents = ctx.parents()
   558         parents = fctx.changectx().parents()
   559         p1 = parents[0].node()
   559         p1 = parents[0].node()
   560 
   560 
   561         def diff(**map):
   561         def diff(**map):
   562             yield self.diff(p1, n, [file])
   562             yield self.diff(p1, n, [path])
   563 
   563 
   564         yield self.t("filediff",
   564         yield self.t("filediff",
   565                      file=file,
   565                      file=path,
   566                      node=hex(n),
   566                      node=hex(n),
   567                      rev=ctx.rev(),
   567                      rev=fctx.rev(),
   568                      parent=self.siblings(parents),
   568                      parent=self.siblings(parents),
   569                      child=self.siblings(ctx.children()),
   569                      child=self.siblings(fctx.children()),
   570                      diff=diff)
   570                      diff=diff)
   571 
   571 
   572     archive_specs = {
   572     archive_specs = {
   573         'bz2': ('application/x-tar', 'tbz2', '.tar.bz2', None),
   573         'bz2': ('application/x-tar', 'tbz2', '.tar.bz2', None),
   574         'gz': ('application/x-tar', 'tgz', '.tar.gz', None),
   574         'gz': ('application/x-tar', 'tgz', '.tar.gz', None),
   647                             value = form[k]
   647                             value = form[k]
   648                         form[name] = value
   648                         form[name] = value
   649                     del form[k]
   649                     del form[k]
   650 
   650 
   651             if form.has_key('manifest'):
   651             if form.has_key('manifest'):
   652                 changeid = req.form['manifest'][0]
   652                 changeid = form['manifest'][0]
   653                 try:
   653                 try:
   654                     req.changectx = self.repo.changectx(changeid)
   654                     req.changectx = self.repo.changectx(changeid)
   655                 except hg.RepoError:
   655                 except hg.RepoError:
   656                     man = self.repo.manifest
   656                     man = self.repo.manifest
   657                     mn = man.lookup(changeid)
   657                     mn = man.lookup(changeid)
   658                     req.changectx = self.repo.changectx(man.linkrev(mn))
   658                     req.changectx = self.repo.changectx(man.linkrev(mn))
   659 
   659 
   660             if form.has_key('filenode'):
   660             if form.has_key('filenode'):
   661                 changeid = req.form['filenode'][0]
   661                 changeid = form['filenode'][0]
   662                 path = self.cleanpath(req.form['file'][0])
   662                 path = self.cleanpath(form['file'][0])
   663                 try:
   663                 try:
   664                     req.changectx = self.repo.changectx(changeid)
   664                     req.changectx = self.repo.changectx(changeid)
   665                     req.filectx = req.changectx.filectx(path)
   665                     req.filectx = req.changectx.filectx(path)
   666                 except hg.RepoError:
   666                 except hg.RepoError:
   667                     req.filectx = self.repo.filectx(path, fileid=changeid)
   667                     req.filectx = self.repo.filectx(path, fileid=changeid)
   716             return (1 + parity / self.stripecount) & 1
   716             return (1 + parity / self.stripecount) & 1
   717         else:
   717         else:
   718             return 0
   718             return 0
   719 
   719 
   720     def do_changelog(self, req):
   720     def do_changelog(self, req):
   721         hi = self.repo.changelog.count() - 1
       
   722         if req.form.has_key('rev'):
   721         if req.form.has_key('rev'):
   723             hi = req.form['rev'][0]
   722             hi = req.form['rev'][0]
   724             try:
   723         else:
   725                 hi = self.repo.changelog.rev(self.repo.lookup(hi))
   724             hi = self.repo.changelog.count() - 1
   726             except hg.RepoError:
   725         try:
   727                 req.write(self.search(hi)) # XXX redirect to 404 page?
   726             ctx = self.repo.changectx(hi)
   728                 return
   727         except hg.RepoError:
   729 
   728             req.write(self.search(hi)) # XXX redirect to 404 page?
   730         req.write(self.changelog(hi))
   729             return
       
   730 
       
   731         req.write(self.changelog(ctx))
   731 
   732 
   732     def do_shortlog(self, req):
   733     def do_shortlog(self, req):
   733         hi = self.repo.changelog.count() - 1
       
   734         if req.form.has_key('rev'):
   734         if req.form.has_key('rev'):
   735             hi = req.form['rev'][0]
   735             hi = req.form['rev'][0]
   736             try:
   736         else:
   737                 hi = self.repo.changelog.rev(self.repo.lookup(hi))
   737             hi = self.repo.changelog.count() - 1
   738             except hg.RepoError:
   738         try:
   739                 req.write(self.search(hi)) # XXX redirect to 404 page?
   739             hi = self.repo.changectx(hi)
   740                 return
   740         except hg.RepoError:
   741 
   741             req.write(self.search(hi)) # XXX redirect to 404 page?
   742         req.write(self.changelog(hi, shortlog = True))
   742             return
       
   743 
       
   744         req.write(self.changelog(ctx, shortlog = True))
   743 
   745 
   744     def do_changeset(self, req):
   746     def do_changeset(self, req):
   745         req.write(self.changeset(req.form['node'][0]))
   747         ctx = self.repo.changectx(req.form['node'][0])
       
   748         req.write(self.changeset(ctx))
   746 
   749 
   747     def do_manifest(self, req):
   750     def do_manifest(self, req):
   748         req.write(self.manifest(req.changectx,
   751         req.write(self.manifest(req.changectx,
   749                                 self.cleanpath(req.form['path'][0])))
   752                                 self.cleanpath(req.form['path'][0])))
   750 
   753 
   753 
   756 
   754     def do_summary(self, req):
   757     def do_summary(self, req):
   755         req.write(self.summary())
   758         req.write(self.summary())
   756 
   759 
   757     def do_filediff(self, req):
   760     def do_filediff(self, req):
   758         req.write(self.filediff(self.cleanpath(req.form['file'][0]),
   761         ctx = self.repo.changectx(req.form['node'][0])
   759                                 req.form['node'][0]))
   762         fctx = ctx.filectx(self.cleanpath(req.form['file'][0]))
       
   763         req.write(self.filediff(fctx))
   760 
   764 
   761     def do_file(self, req):
   765     def do_file(self, req):
   762         req.write(self.filerevision(req.filectx))
   766         req.write(self.filerevision(req.filectx))
   763 
   767 
   764     def do_annotate(self, req):
   768     def do_annotate(self, req):