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",