Mercurial > public > mercurial-scm > hg
diff mercurial/hgweb/webcommands.py @ 16722:7bf48bc7de23 stable
hgweb: fix filediff base calculation
Previously, we were finding the most recent version of a file in a
changeset and comparing it against its first file parent. This was
wrong on three counts:
- it would show a diff in revisions where there was no change to a file
- it would show a diff when only the exec bit changed
- it would potentially compare against a much older changeset, which
could be very expensive if git-style rename detection was enabled
This compares the file in the current context with that context's
parent, which may result in an empty diff when looking at a file not
touched by the current changeset.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 14 May 2012 12:56:43 +0200 |
parents | dd68c972d089 |
children | 3e24ce3de5f1 |
line wrap: on
line diff
--- a/mercurial/hgweb/webcommands.py Sun May 13 17:34:55 2012 +0200 +++ b/mercurial/hgweb/webcommands.py Mon May 14 12:56:43 2012 +0200 @@ -558,6 +558,7 @@ if fctx is not None: n = fctx.node() path = fctx.path() + ctx = fctx.changectx() else: n = ctx.node() # path already defined in except clause @@ -567,7 +568,7 @@ if 'style' in req.form: style = req.form['style'][0] - diffs = webutil.diffs(web.repo, tmpl, fctx or ctx, [path], parity, style) + diffs = webutil.diffs(web.repo, tmpl, ctx, [path], parity, style) rename = fctx and webutil.renamelink(fctx) or [] ctx = fctx and fctx or ctx return tmpl("filediff",