mercurial/hgweb/hgweb_mod.py
changeset 3412 0eba7e76cd02
parent 3409 1ae738bacf74
child 3413 a2179e78d18b
equal deleted inserted replaced
3411:5207cf649abe 3412:0eba7e76cd02
    26     up = os.path.dirname(p)
    26     up = os.path.dirname(p)
    27     if up == "/":
    27     if up == "/":
    28         return "/"
    28         return "/"
    29     return up + "/"
    29     return up + "/"
    30 
    30 
    31 def revnavgen(pos, pagelen, limit):
    31 def revnavgen(pos, pagelen, limit, nodefunc):
    32     def seq(factor, limit=None):
    32     def seq(factor, limit=None):
    33         if limit:
    33         if limit:
    34             yield limit
    34             yield limit
    35             if limit >= 20 and limit <= 40:
    35             if limit >= 20 and limit <= 40:
    36                 yield 50
    36                 yield 50
    48                 continue
    48                 continue
    49             if f > limit:
    49             if f > limit:
    50                 break
    50                 break
    51             last = f
    51             last = f
    52             if pos + f < limit:
    52             if pos + f < limit:
    53                 l.append(("+%d" % f, pos + f))
    53                 l.append(("+%d" % f, hex(nodefunc(pos + f).node())))
    54             if pos - f >= 0:
    54             if pos - f >= 0:
    55                 l.insert(0, ("-%d" % f, pos - f))
    55                 l.insert(0, ("-%d" % f, hex(nodefunc(pos - f).node())))
    56 
    56 
    57         yield {"label": "(0)", "rev": 0}
    57         yield {"label": "(0)", "node": hex(nodefunc(0).node())}
    58 
    58 
    59         for label, rev in l:
    59         for label, node in l:
    60             yield {"label": label, "rev": rev}
    60             yield {"label": label, "node": node}
    61 
    61 
    62         yield {"label": "tip", "rev": "tip"}
    62         yield {"label": "tip", "node": hex(nodefunc('-1').node())}
    63 
    63 
    64     return nav
    64     return nav
    65 
    65 
    66 class hgweb(object):
    66 class hgweb(object):
    67     def __init__(self, repo, name=None):
    67     def __init__(self, repo, name=None):
   213         pos = ctx.rev()
   213         pos = ctx.rev()
   214         start = max(0, pos - maxchanges + 1)
   214         start = max(0, pos - maxchanges + 1)
   215         end = min(count, start + maxchanges)
   215         end = min(count, start + maxchanges)
   216         pos = end - 1
   216         pos = end - 1
   217 
   217 
   218         changenav = revnavgen(pos, maxchanges, count)
   218         changenav = revnavgen(pos, maxchanges, count, self.repo.changectx)
   219 
   219 
   220         yield self.t(shortlog and 'shortlog' or 'changelog',
   220         yield self.t(shortlog and 'shortlog' or 'changelog',
   221                      changenav=changenav,
   221                      changenav=changenav,
   222                      node=hex(cl.tip()),
   222                      node=hex(cl.tip()),
   223                      rev=pos, changesets=count, entries=changelist,
   223                      rev=pos, changesets=count, entries=changelist,
   336                 parity = 1 - parity
   336                 parity = 1 - parity
   337 
   337 
   338             for e in l:
   338             for e in l:
   339                 yield e
   339                 yield e
   340 
   340 
   341         nav = revnavgen(pos, pagelen, count)
   341         nodefunc = lambda x: fctx.filectx(fileid=x)
       
   342         nav = revnavgen(pos, pagelen, count, nodefunc)
   342         yield self.t("filelog", file=f, node=hex(fctx.node()), nav=nav,
   343         yield self.t("filelog", file=f, node=hex(fctx.node()), nav=nav,
   343                      entries=entries)
   344                      entries=entries)
   344 
   345 
   345     def filerevision(self, fctx):
   346     def filerevision(self, fctx):
   346         f = fctx.path()
   347         f = fctx.path()