[PATCH 11 of 15 V3] hgweb: generate revnav in two phase
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Wed Jan 16 13:32:17 UTC 2013
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1357842588 -3600
# Node ID b3a1ca0245d9d90b20d552229986825a3d062b75
# Parent f3b219172ce86cb67da87a01aac312d0f6a96e78
hgweb: generate revnav in two phase
We first generate revision to link. Then we dispatch them in before, after list.
This will help filtering of unknown revision.
diff --git a/mercurial/hgweb/webutil.py b/mercurial/hgweb/webutil.py
--- a/mercurial/hgweb/webutil.py
+++ b/mercurial/hgweb/webutil.py
@@ -75,20 +75,26 @@ class revnav(object):
"""
if not self:
# empty repo
return ({'before': (), 'after': ()},)
- navbefore = [("(0)", self.hex(0))]
- navafter = []
-
+ targets = []
for f in _navseq(1, pagelen):
if f > limit:
break
- if pos + f < limit:
- navafter.append(("+%d" % f, self.hex(pos + f)))
- if pos - f >= 0:
- navbefore.insert(0, ("-%d" % f, self.hex(pos - f)))
+ targets.append(pos + f)
+ targets.append(pos - f)
+ targets.sort()
+
+ navbefore = [("(0)", self.hex(0))]
+ navafter = []
+ for rev in targets:
+ if pos < rev < limit:
+ navafter.append(("+%d" % f, self.hex(rev)))
+ if 0 < rev < pos:
+ navbefore.append(("-%d" % f, self.hex(rev)))
+
navafter.append(("tip", "tip"))
data = lambda i: {"label": i[0], "node": i[1]}
return ({'before': lambda **map: (data(i) for i in navbefore),
More information about the Mercurial-devel
mailing list