diff -r c2dbd818e884 -r f36dc643ffdc mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py Mon Mar 13 10:40:19 2017 +0100 +++ b/mercurial/hgweb/webcommands.py Mon Mar 13 10:41:13 2017 +0100 @@ -973,6 +973,10 @@ morevars = copy.copy(tmpl.defaults['sessionvars']) morevars['revcount'] = revcount * 2 + patch = 'patch' in req.form + if patch: + lessvars['patch'] = morevars['patch'] = req.form['patch'][0] + count = fctx.filerev() + 1 start = max(0, count - revcount) # first rev on this page end = min(count, start + revcount) # last rev on this page @@ -981,12 +985,27 @@ repo = web.repo revs = fctx.filelog().revs(start, end - 1) entries = [] + + diffstyle = web.config('web', 'style', 'paper') + if 'style' in req.form: + diffstyle = req.form['style'][0] + + def diff(fctx): + ctx = fctx.changectx() + basectx = ctx.p1() + path = fctx.path() + return webutil.diffs(web, tmpl, ctx, basectx, [path], diffstyle) + for i in revs: iterfctx = fctx.filectx(i) + diffs = None + if patch: + diffs = diff(iterfctx) entries.append(dict( parity=next(parity), filerev=i, file=f, + diff=diffs, rename=webutil.renamelink(iterfctx), **webutil.commonentry(repo, iterfctx))) entries.reverse() @@ -1000,6 +1019,7 @@ nav=nav, symrev=webutil.symrevorshortnode(req, fctx), entries=entries, + patch=patch, latestentry=latestentry, revcount=revcount, morevars=morevars,