Mercurial > public > mercurial-scm > hg-stable
diff mercurial/hgweb/webcommands.py @ 31939:604d31507f86
hgweb: handle a "descend" query parameter in filelog command
When this "descend" query parameter is present along with "linerange"
parameter, we get revisions following line range in descending order. The
parameter has no effect without "linerange".
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Mon, 10 Apr 2017 16:23:41 +0200 |
parents | 6be6e4becaaf |
children | a298f5c61b34 |
line wrap: on
line diff
--- a/mercurial/hgweb/webcommands.py Mon Jan 16 09:24:47 2017 +0100 +++ b/mercurial/hgweb/webcommands.py Mon Apr 10 16:23:41 2017 +0200 @@ -979,6 +979,9 @@ patch = 'patch' in req.form if patch: lessvars['patch'] = morevars['patch'] = req.form['patch'][0] + descend = 'descend' in req.form + if descend: + lessvars['descend'] = morevars['descend'] = req.form['descend'][0] count = fctx.filerev() + 1 start = max(0, count - revcount) # first rev on this page @@ -1007,8 +1010,11 @@ # deactivate numeric nav links when linerange is specified as this # would required a dedicated "revnav" class nav = None - ancestors = context.blockancestors(fctx, *lrange) - for i, (c, lr) in enumerate(ancestors, 1): + if descend: + it = context.blockdescendants(fctx, *lrange) + else: + it = context.blockancestors(fctx, *lrange) + for i, (c, lr) in enumerate(it, 1): diffs = None if patch: diffs = diff(c, linerange=lr) @@ -1049,6 +1055,7 @@ nav=nav, symrev=webutil.symrevorshortnode(req, fctx), entries=entries, + descend=descend, patch=patch, latestentry=latestentry, linerange=linerange,