[PATCH 01 of 23 Series-D] hgweb: no do not use listinsert(0, ...)
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Thu Jan 10 18:23:46 CST 2013
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1355940410 -3600
# Node ID 12a9a51ca6f925bac254c693ef53627d39c622db
# Parent 5db16424142c5a52a2fbdcd5db20e8deec355028
hgweb: no do not use listinsert(0, ...)
This is not efficient. We now append element and either reverse the list or
iterate in reverse order.
diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py
--- a/mercurial/hgweb/webcommands.py
+++ b/mercurial/hgweb/webcommands.py
@@ -200,30 +200,29 @@ def changelog(web, req, tmpl, shortlog=F
ctx = web.repo[i]
n = ctx.node()
showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n)
files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles)
- l.insert(0, {"parity": parity.next(),
- "author": ctx.user(),
- "parent": webutil.parents(ctx, i - 1),
- "child": webutil.children(ctx, i + 1),
- "changelogtag": showtags,
- "desc": ctx.description(),
- "date": ctx.date(),
- "files": files,
- "rev": i,
- "node": hex(n),
- "tags": webutil.nodetagsdict(web.repo, n),
- "bookmarks": webutil.nodebookmarksdict(web.repo, n),
- "inbranch": webutil.nodeinbranch(web.repo, ctx),
- "branches": webutil.nodebranchdict(web.repo, ctx)
- })
+ l.append({"parity": parity.next(),
+ "author": ctx.user(),
+ "parent": webutil.parents(ctx, i - 1),
+ "child": webutil.children(ctx, i + 1),
+ "changelogtag": showtags,
+ "desc": ctx.description(),
+ "date": ctx.date(),
+ "files": files,
+ "rev": i,
+ "node": hex(n),
+ "tags": webutil.nodetagsdict(web.repo, n),
+ "bookmarks": webutil.nodebookmarksdict(web.repo, n),
+ "inbranch": webutil.nodeinbranch(web.repo, ctx),
+ "branches": webutil.nodebranchdict(web.repo, ctx)
+ })
+ if limit > 0:
+ l = l[-limit:]
- if limit > 0:
- l = l[:limit]
-
- for e in l:
+ for e in reversed(l):
yield e
revcount = shortlog and web.maxshortchanges or web.maxchanges
if 'revcount' in req.form:
revcount = int(req.form.get('revcount', [revcount])[0])
@@ -518,11 +517,11 @@ def summary(web, req, tmpl):
for i in xrange(start, end):
ctx = web.repo[i]
n = ctx.node()
hn = hex(n)
- l.insert(0, tmpl(
+ l.append(tmpl(
'shortlogentry',
parity=parity.next(),
author=ctx.user(),
desc=ctx.description(),
date=ctx.date(),
@@ -531,10 +530,11 @@ def summary(web, req, tmpl):
tags=webutil.nodetagsdict(web.repo, n),
bookmarks=webutil.nodebookmarksdict(web.repo, n),
inbranch=webutil.nodeinbranch(web.repo, ctx),
branches=webutil.nodebranchdict(web.repo, ctx)))
+ l.reverse()
yield l
tip = web.repo['tip']
count = len(web.repo)
start = max(0, count - web.maxchanges)
@@ -746,31 +746,31 @@ def filelog(web, req, tmpl):
repo = web.repo
for i in xrange(start, end):
iterfctx = fctx.filectx(i)
- l.insert(0, {"parity": parity.next(),
- "filerev": i,
- "file": f,
- "node": iterfctx.hex(),
- "author": iterfctx.user(),
- "date": iterfctx.date(),
- "rename": webutil.renamelink(iterfctx),
- "parent": webutil.parents(iterfctx),
- "child": webutil.children(iterfctx),
- "desc": iterfctx.description(),
- "tags": webutil.nodetagsdict(repo, iterfctx.node()),
- "bookmarks": webutil.nodebookmarksdict(
- repo, iterfctx.node()),
- "branch": webutil.nodebranchnodefault(iterfctx),
- "inbranch": webutil.nodeinbranch(repo, iterfctx),
- "branches": webutil.nodebranchdict(repo, iterfctx)})
+ l.append({"parity": parity.next(),
+ "filerev": i,
+ "file": f,
+ "node": iterfctx.hex(),
+ "author": iterfctx.user(),
+ "date": iterfctx.date(),
+ "rename": webutil.renamelink(iterfctx),
+ "parent": webutil.parents(iterfctx),
+ "child": webutil.children(iterfctx),
+ "desc": iterfctx.description(),
+ "tags": webutil.nodetagsdict(repo, iterfctx.node()),
+ "bookmarks": webutil.nodebookmarksdict(
+ repo, iterfctx.node()),
+ "branch": webutil.nodebranchnodefault(iterfctx),
+ "inbranch": webutil.nodeinbranch(repo, iterfctx),
+ "branches": webutil.nodebranchdict(repo, iterfctx)})
if limit > 0:
- l = l[:limit]
+ l = l[-limit:]
- for e in l:
+ for e in reversed(l):
yield e
nodefunc = lambda x: fctx.filectx(fileid=x)
nav = webutil.revnavgen(end - 1, revcount, count, nodefunc)
return tmpl("filelog", file=f, node=fctx.hex(), nav=nav,
More information about the Mercurial-devel
mailing list