Mercurial > public > mercurial-scm > hg
diff mercurial/hgweb/webutil.py @ 19094:fc1b77db123f stable
hgweb: handle filtered "0" rev in navigation
Before this changeset, navigation generation crashed if revision "0" was
filtered. We introduce a `_first` methods on revision navigation that return the
lowest unfiltered element and use it in two place were the "0" changeset was
explicitly referenced.
Test case are introduced.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Tue, 30 Apr 2013 13:53:49 +0200 |
parents | 6f27efc7db23 |
children | f962870712da |
line wrap: on
line diff
--- a/mercurial/hgweb/webutil.py Tue Apr 30 15:11:12 2013 +0200 +++ b/mercurial/hgweb/webutil.py Tue Apr 30 13:53:49 2013 +0200 @@ -51,7 +51,14 @@ def __nonzero__(self): """return True if any revision to navigate over""" - return bool(len(self._revlog)) + return self._first() is not None + + def _first(self): + """return the minimum non-filtered changeset or None""" + try: + return iter(self._revlog).next() + except StopIteration: + return None def hex(self, rev): return hex(self._revlog.node(rev)) @@ -81,7 +88,8 @@ targets.append(pos - f) targets.sort() - navbefore = [("(0)", self.hex(0))] + first = self._first() + navbefore = [("(%i)" % first, self.hex(first))] navafter = [] for rev in targets: if rev not in self._revlog: