# HG changeset patch # User Christophe de Vienne # Date 1414431734 -3600 # Node ID 3e5dfa8a94ef4f3e38e589e8a80792eb51cdc303 # Parent 638009474a3b0ed59f2e74aa518c878c596f9d32 Use revset to calculate rev list. When using obsolescence markers, the rev numbers are not a continuous range. This patch uses revset expressions to find the LOG_PAGE_LEN previous accessible revisions and calculate older and newer links. diff -r 638009474a3b -r 3e5dfa8a94ef review/web.py --- a/review/web.py Mon Jan 23 15:01:27 2012 +0100 +++ b/review/web.py Mon Oct 27 18:42:14 2014 +0100 @@ -116,16 +116,20 @@ if rev_max > tip or rev_max < 0: rev_max = tip - rev_min = rev_max - LOG_PAGE_LEN if rev_max >= LOG_PAGE_LEN else 0 - if rev_min < 0: - rev_min = 0 + revs = g.datastore.target.revs('sort(last(:%s, %s), -rev)' % ( + rev_max, LOG_PAGE_LEN)) + + rev_max, rev_min = revs[0], revs[-1] + + older = g.datastore.target.revs('first(last(:%s, 2))' % rev_min)[0] - older = rev_min - 1 if rev_min > 0 else -1 - newer = rev_max + LOG_PAGE_LEN + 1 if rev_max < tip else -1 - if newer > tip: - newer = tip + if rev_max == tip: + newer = -1 + else: + newer = g.datastore.target.revs('last(first(%s:, %s))' % ( + rev_max, LOG_PAGE_LEN + 1))[0] - rcsets = [g.datastore[r] for r in xrange(rev_max, rev_min - 1, -1)] + rcsets = [g.datastore[r] for r in revs] return _render('index.html', rcsets=rcsets, newer=newer, older=older)