changeset 18478:886936ecc21b stable

hgweb: don't attempt to show hidden bookmarks (issue3774) localrepository._bookmarks is unfiltered, but hgweb gets a filtered repo. This fixes the resulting traceback on the 'bookmarks' page.
author Kevin Bullock <kbullock@ringworld.org>
date Fri, 25 Jan 2013 11:43:54 -0600
parents 010d6d3fcfee
children 0efd5686f80c
files mercurial/hgweb/webcommands.py tests/test-hgweb-commands.t
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hgweb/webcommands.py	Fri Jan 25 14:50:18 2013 -0600
+++ b/mercurial/hgweb/webcommands.py	Fri Jan 25 11:43:54 2013 -0600
@@ -424,7 +424,7 @@
                 latestentry=lambda **x: entries(True, True, **x))
 
 def bookmarks(web, req, tmpl):
-    i = web.repo._bookmarks.items()
+    i = [b for b in web.repo._bookmarks.items() if b[1] in web.repo]
     parity = paritygen(web.stripecount)
 
     def entries(latestonly, **map):
--- a/tests/test-hgweb-commands.t	Fri Jan 25 14:50:18 2013 -0600
+++ b/tests/test-hgweb-commands.t	Fri Jan 25 11:43:54 2013 -0600
@@ -1370,4 +1370,20 @@
 
   $ cat errors.log
 
+issue3774
+
+  $ hg phase -fs 4
+  $ hg bookmark -r4 secret
+  $ cat > hgweb.cgi <<HGWEB
+  > from mercurial import demandimport; demandimport.enable()
+  > from mercurial.hgweb import hgweb
+  > from mercurial.hgweb import wsgicgi
+  > app = hgweb('.', 'test')
+  > wsgicgi.launch(app)
+  > HGWEB
+  $ . "$TESTDIR/cgienv"
+  $ PATH_INFO=/bookmarks; export PATH_INFO
+  $ QUERY_STRING='style=raw'
+  $ python hgweb.cgi
+
   $ cd ..