mercurial/hgweb/webcommands.py
branchstable
changeset 19486 002b711a3e8a
parent 19485 02c71f96eb6c
child 19487 8cfa3a3664a5
equal deleted inserted replaced
19485:02c71f96eb6c 19486:002b711a3e8a
   198             ctx = web.repo[hi]
   198             ctx = web.repo[hi]
   199         except (error.RepoError, error.LookupError):
   199         except (error.RepoError, error.LookupError):
   200             return _search(web, req, tmpl) # XXX redirect to 404 page?
   200             return _search(web, req, tmpl) # XXX redirect to 404 page?
   201 
   201 
   202     def changelist(latestonly, **map):
   202     def changelist(latestonly, **map):
   203         l = [] # build a list in forward order for efficiency
       
   204         revs = []
   203         revs = []
   205         if start < end:
   204         if pos != -1:
   206             revs = web.repo.changelog.revs(start, end - 1)
   205             revs = web.repo.changelog.revs(pos, 0)
   207         if latestonly:
   206         if latestonly:
   208             for r in revs:
   207             revs = (next(revs),)
   209                 pass
   208         curcount = 0
   210             revs = (r,)
       
   211         for i in revs:
   209         for i in revs:
   212             ctx = web.repo[i]
   210             ctx = web.repo[i]
   213             n = ctx.node()
   211             n = ctx.node()
   214             showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n)
   212             showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n)
   215             files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles)
   213             files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles)
   216 
   214 
   217             l.append({"parity": parity.next(),
   215             curcount += 1
   218                       "author": ctx.user(),
   216             if curcount > revcount:
   219                       "parent": webutil.parents(ctx, i - 1),
   217                 break
   220                       "child": webutil.children(ctx, i + 1),
   218             yield {"parity": parity.next(),
   221                       "changelogtag": showtags,
   219                    "author": ctx.user(),
   222                       "desc": ctx.description(),
   220                    "parent": webutil.parents(ctx, i - 1),
   223                       "extra": ctx.extra(),
   221                    "child": webutil.children(ctx, i + 1),
   224                       "date": ctx.date(),
   222                    "changelogtag": showtags,
   225                       "files": files,
   223                    "desc": ctx.description(),
   226                       "rev": i,
   224                    "extra": ctx.extra(),
   227                       "node": hex(n),
   225                    "date": ctx.date(),
   228                       "tags": webutil.nodetagsdict(web.repo, n),
   226                    "files": files,
   229                       "bookmarks": webutil.nodebookmarksdict(web.repo, n),
   227                    "rev": i,
   230                       "inbranch": webutil.nodeinbranch(web.repo, ctx),
   228                    "node": hex(n),
   231                       "branches": webutil.nodebranchdict(web.repo, ctx)
   229                    "tags": webutil.nodetagsdict(web.repo, n),
   232                      })
   230                    "bookmarks": webutil.nodebookmarksdict(web.repo, n),
   233         for e in reversed(l):
   231                    "inbranch": webutil.nodeinbranch(web.repo, ctx),
   234             yield e
   232                    "branches": webutil.nodebranchdict(web.repo, ctx)
       
   233             }
   235 
   234 
   236     revcount = shortlog and web.maxshortchanges or web.maxchanges
   235     revcount = shortlog and web.maxshortchanges or web.maxchanges
   237     if 'revcount' in req.form:
   236     if 'revcount' in req.form:
   238         revcount = int(req.form.get('revcount', [revcount])[0])
   237         revcount = int(req.form.get('revcount', [revcount])[0])
   239         revcount = max(revcount, 1)
   238         revcount = max(revcount, 1)
   244     morevars = copy.copy(tmpl.defaults['sessionvars'])
   243     morevars = copy.copy(tmpl.defaults['sessionvars'])
   245     morevars['revcount'] = revcount * 2
   244     morevars['revcount'] = revcount * 2
   246 
   245 
   247     count = len(web.repo)
   246     count = len(web.repo)
   248     pos = ctx.rev()
   247     pos = ctx.rev()
   249     start = max(0, pos - revcount + 1)
   248     parity = paritygen(web.stripecount)
   250     end = pos + 1
       
   251     parity = paritygen(web.stripecount, offset=start - end)
       
   252 
   249 
   253     changenav = webutil.revnav(web.repo).gen(pos, revcount, count)
   250     changenav = webutil.revnav(web.repo).gen(pos, revcount, count)
   254 
   251 
   255     return tmpl(shortlog and 'shortlog' or 'changelog', changenav=changenav,
   252     return tmpl(shortlog and 'shortlog' or 'changelog', changenav=changenav,
   256                 node=ctx.hex(), rev=pos, changesets=count,
   253                 node=ctx.hex(), rev=pos, changesets=count,