# HG changeset patch # User Anton Shestakov # Date 1459405407 -28800 # Node ID ca0c0ca30c62400fb1c33092d736a52e540e72e3 # Parent 94494031f659d1ce971bc388168863e97ff2a56c hgweb: sort bookmarks early Let's do the same thing that /tags page does. It gets sorted tags and then if it needs the latest only, it just slices the first item from the list. Since it's a slice and not a min(), it doesn't throw an exception if the list is empty. This fixes HTTP 500 error from issue5022. diff -r 94494031f659 -r ca0c0ca30c62 mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py Thu Mar 31 18:09:09 2016 +0800 +++ b/mercurial/hgweb/webcommands.py Thu Mar 31 14:23:27 2016 +0800 @@ -606,13 +606,13 @@ The ``bookmarks`` template is rendered. """ i = [b for b in web.repo._bookmarks.items() if b[1] in web.repo] + i = sorted(i) parity = paritygen(web.stripecount) def entries(latestonly, **map): + t = i if latestonly: - t = [min(i)] - else: - t = sorted(i) + t = i[:1] for k, n in t: yield {"parity": parity.next(), "bookmark": k, diff -r 94494031f659 -r ca0c0ca30c62 tests/test-hgweb-empty.t --- a/tests/test-hgweb-empty.t Thu Mar 31 18:09:09 2016 +0800 +++ b/tests/test-hgweb-empty.t Thu Mar 31 14:23:27 2016 +0800 @@ -461,4 +461,20 @@ + $ (get-with-headers.py localhost:$HGPORT 'atom-bookmarks') + 200 Script output follows + + + + http://*:$HGPORT/ (glob) + (glob) + (glob) + test: bookmarks + test bookmark history + Mercurial SCM + + + + + $ cd ..