@@ -281,33 +281,16 @@ def changelog(web, req, tmpl, shortlog=F
revs = []
if pos != -1:
revs = web.repo.changelog.revs(pos, 0)
curcount = 0
- for i in revs:
- ctx = web.repo[i]
- n = ctx.node()
- showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n)
- files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles)
-
+ for rev in revs:
curcount += 1
if curcount > revcount + 1:
break
- yield {"parity": parity.next(),
- "author": ctx.user(),
- "parent": webutil.parents(ctx, i - 1),
- "child": webutil.children(ctx, i + 1),
- "changelogtag": showtags,
- "desc": ctx.description(),
- "extra": ctx.extra(),
- "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)
- }
+
+ entry = webutil.changelistentry(web, web.repo[rev], tmpl)
+ entry['parity'] = parity.next()
+ yield entry
revcount = shortlog and web.maxshortchanges or web.maxchanges
if 'revcount' in req.form:
try:
@@ -248,8 +248,37 @@ def filectx(repo, req):
fctx = repo.filectx(path, fileid=changeid)
return fctx
+def changelistentry(web, ctx, tmpl):
+ '''Obtain a dictionary to be used for entries in a changelist.
+
+ This function is called when producing items for the "entries" list passed
+ to the "shortlog" and "changelog" templates.
+ '''
+ repo = web.repo
+ rev = ctx.rev()
+ n = ctx.node()
+ showtags = showtag(repo, tmpl, 'changelogtag', n)
+ files = listfilediffs(tmpl, ctx.files(), n, web.maxfiles)
+
+ return {
+ "author": ctx.user(),
+ "parent": parents(ctx, rev - 1),
+ "child": children(ctx, rev + 1),
+ "changelogtag": showtags,
+ "desc": ctx.description(),
+ "extra": ctx.extra(),
+ "date": ctx.date(),
+ "files": files,
+ "rev": rev,
+ "node": hex(n),
+ "tags": nodetagsdict(repo, n),
+ "bookmarks": nodebookmarksdict(repo, n),
+ "inbranch": nodeinbranch(repo, ctx),
+ "branches": nodebranchdict(repo, ctx)
+ }
+
def listfilediffs(tmpl, files, node, max):
for f in files[:max]:
yield tmpl('filedifflink', node=hex(node), file=f)
if len(files) > max: