--- a/mercurial/hgweb/webutil.py Mon Mar 02 17:32:37 2015 -0600
+++ b/mercurial/hgweb/webutil.py Mon Mar 02 15:07:18 2015 -0800
@@ -10,7 +10,7 @@
from mercurial import match, patch, error, ui, util, pathutil, context
from mercurial.i18n import _
from mercurial.node import hex, nullid
-from common import ErrorResponse
+from common import ErrorResponse, paritygen
from common import HTTP_NOT_FOUND
import difflib
@@ -279,6 +279,61 @@
"branches": nodebranchdict(repo, ctx)
}
+def changesetentry(web, req, tmpl, ctx):
+ '''Obtain a dictionary to be used to render the "changeset" template.'''
+
+ showtags = showtag(web.repo, tmpl, 'changesettag', ctx.node())
+ showbookmarks = showbookmark(web.repo, tmpl, 'changesetbookmark',
+ ctx.node())
+ showbranch = nodebranchnodefault(ctx)
+
+ files = []
+ parity = paritygen(web.stripecount)
+ for blockno, f in enumerate(ctx.files()):
+ template = f in ctx and 'filenodelink' or 'filenolink'
+ files.append(tmpl(template,
+ node=ctx.hex(), file=f, blockno=blockno + 1,
+ parity=parity.next()))
+
+ basectx = basechangectx(web.repo, req)
+ if basectx is None:
+ basectx = ctx.p1()
+
+ style = web.config('web', 'style', 'paper')
+ if 'style' in req.form:
+ style = req.form['style'][0]
+
+ parity = paritygen(web.stripecount)
+ diff = diffs(web.repo, tmpl, ctx, basectx, None, parity, style)
+
+ parity = paritygen(web.stripecount)
+ diffstatsgen = diffstatgen(ctx, basectx)
+ diffstats = diffstat(tmpl, ctx, diffstatsgen, parity)
+
+ return dict(
+ diff=diff,
+ rev=ctx.rev(),
+ node=ctx.hex(),
+ parent=tuple(parents(ctx)),
+ child=children(ctx),
+ basenode=basectx.hex(),
+ changesettag=showtags,
+ changesetbookmark=showbookmarks,
+ changesetbranch=showbranch,
+ author=ctx.user(),
+ desc=ctx.description(),
+ extra=ctx.extra(),
+ date=ctx.date(),
+ files=files,
+ diffsummary=lambda **x: diffsummary(diffstatsgen),
+ diffstat=diffstats,
+ archives=web.archivelist(ctx.hex()),
+ tags=nodetagsdict(web.repo, ctx.node()),
+ bookmarks=nodebookmarksdict(web.repo, ctx.node()),
+ branch=nodebranchnodefault(ctx),
+ inbranch=nodeinbranch(web.repo, ctx),
+ branches=nodebranchdict(web.repo, ctx))
+
def listfilediffs(tmpl, files, node, max):
for f in files[:max]:
yield tmpl('filedifflink', node=hex(node), file=f)