hgweb: don't dereference symbolic revision in monoblue style
authorAnton Shestakov <av6@dwimlabs.net>
Tue, 16 Jun 2015 13:59:49 +0800
changeset 25604 0cdcbc477cac
parent 25603 1cac419ab831
child 25605 dd89304687a3
hgweb: don't dereference symbolic revision in monoblue style Let's make monoblue templates use symbolic revision in navigation links. The majority of links (log, filelog, annotate, etc) still use node hashes. Some pages don't have permanent links to current node hash (so it's not very easy to go from /rev/tip to /rev/<tip hash>), this will be addressed in future patches.
mercurial/templates/monoblue/changelog.tmpl
mercurial/templates/monoblue/changeset.tmpl
mercurial/templates/monoblue/fileannotate.tmpl
mercurial/templates/monoblue/filecomparison.tmpl
mercurial/templates/monoblue/filediff.tmpl
mercurial/templates/monoblue/filelog.tmpl
mercurial/templates/monoblue/filerevision.tmpl
mercurial/templates/monoblue/graph.tmpl
mercurial/templates/monoblue/manifest.tmpl
mercurial/templates/monoblue/map
mercurial/templates/monoblue/shortlog.tmpl
tests/test-hgweb-descend-empties.t
tests/test-hgweb-symrev.t
--- a/mercurial/templates/monoblue/changelog.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/changelog.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,11 +21,11 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li class="current">changelog</li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a></li>
             {archives%archiveentry}
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
--- a/mercurial/templates/monoblue/changeset.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/changeset.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,18 +21,18 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}changelog{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
 
     <ul class="submenu">
         <li class="current">changeset</li>
-        <li><a href="{url|urlescape}raw-rev/{node|short}">raw</a></li>
+        <li><a href="{url|urlescape}raw-rev/{symrev}">raw</a></li>
         {archives%archiveentry}
     </ul>
 
--- a/mercurial/templates/monoblue/fileannotate.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/fileannotate.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,22 +21,22 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
 
     <ul class="submenu">
-        <li><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
-        <li><a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+        <li><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+        <li><a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
         <li class="current">annotate</li>
-        <li><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-        <li><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
-        <li><a href="{url|urlescape}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
+        <li><a href="{url|urlescape}diff/{symrev}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+        <li><a href="{url|urlescape}comparison/{symrev}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
+        <li><a href="{url|urlescape}raw-annotate/{symrev}/{file|urlescape}">raw</a></li>
     </ul>
 
     <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
--- a/mercurial/templates/monoblue/filecomparison.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/filecomparison.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,22 +21,22 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
 
     <ul class="submenu">
-        <li><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
-        <li><a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
-        <li><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
-        <li><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+        <li><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+        <li><a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+        <li><a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+        <li><a href="{url|urlescape}diff/{symrev}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
         <li class="current">comparison</li>
-        <li><a href="{url|urlescape}raw-diff/{node|short}/{file|urlescape}">raw</a></li>
+        <li><a href="{url|urlescape}raw-diff/{symrev}/{file|urlescape}">raw</a></li>
     </ul>
 
     <h2 class="no-link no-border">comparison: {file|escape}</h2>
--- a/mercurial/templates/monoblue/filediff.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/filediff.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,22 +21,22 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
 
     <ul class="submenu">
-        <li><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
-        <li><a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
-        <li><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+        <li><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+        <li><a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+        <li><a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
         <li class="current">diff</li>
-        <li><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
-        <li><a href="{url|urlescape}raw-diff/{node|short}/{file|urlescape}">raw</a></li>
+        <li><a href="{url|urlescape}comparison/{symrev}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
+        <li><a href="{url|urlescape}raw-diff/{symrev}/{file|urlescape}">raw</a></li>
     </ul>
 
     <h2 class="no-link no-border">diff: {file|escape}</h2>
--- a/mercurial/templates/monoblue/filelog.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/filelog.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,21 +21,21 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
 
     <ul class="submenu">
-        <li><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+        <li><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
         <li class="current">revisions</li>
-        <li><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
-        <li><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-        <li><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
+        <li><a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+        <li><a href="{url|urlescape}diff/{symrev}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+        <li><a href="{url|urlescape}comparison/{symrev}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
         <li><a href="{url|urlescape}rss-log/tip/{file|urlescape}">rss</a></li>
     </ul>
 
--- a/mercurial/templates/monoblue/filerevision.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/filerevision.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,22 +21,22 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}changelog{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
 
     <ul class="submenu">
         <li class="current">file</li>
-        <li><a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
-        <li><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
-        <li><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-        <li><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
-        <li><a href="{url|urlescape}raw-file/{node|short}/{file|urlescape}">raw</a></li>
+        <li><a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+        <li><a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+        <li><a href="{url|urlescape}diff/{symrev}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+        <li><a href="{url|urlescape}comparison/{symrev}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
+        <li><a href="{url|urlescape}raw-file/{symrev}/{file|urlescape}">raw</a></li>
     </ul>
 
     <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
--- a/mercurial/templates/monoblue/graph.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/graph.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -26,7 +26,7 @@
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a></li>
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
     </div>
@@ -99,8 +99,8 @@
     </script>
 
     <div class="page-path">
-        <a href="{url|urlescape}graph/{rev}{lessvars%urlparameter}">less</a>
-        <a href="{url|urlescape}graph/{rev}{morevars%urlparameter}">more</a>
+        <a href="{url|urlescape}graph/{symrev}{lessvars%urlparameter}">less</a>
+        <a href="{url|urlescape}graph/{symrev}{morevars%urlparameter}">more</a>
         | {changenav%navgraph}
     </div>
 
--- a/mercurial/templates/monoblue/manifest.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/manifest.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,7 +21,7 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
             <li><a href="{url|urlescape}changelog{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
@@ -31,7 +31,7 @@
     </div>
 
     <ul class="submenu">
-        <li><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+        <li><a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a></li>
         {archives%archiveentry}
     </ul>
 
@@ -43,7 +43,7 @@
             <td>drwxr-xr-x</td>
             <td></td>
             <td></td>
-            <td><a href="{url|urlescape}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
+            <td><a href="{url|urlescape}file/{symrev}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
             <td class="link">&nbsp;</td>
         </tr>
         {dentries%direntry}
--- a/mercurial/templates/monoblue/map	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/map	Tue Jun 16 13:59:49 2015 +0800
@@ -66,21 +66,21 @@
     <td></td>
     <td></td>
     <td>
-      <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
-      <a href="{url|urlescape}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
+      <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
+      <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
     </td>
-    <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
+    <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
   </tr>'
 fileentry = '
   <tr class="parity{parity}">
     <td>{permissions|permissions}</td>
     <td>{date|isodate}</td>
     <td>{size}</td>
-    <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
+    <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
     <td>
-      <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
-      <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
-      <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+      <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+      <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
+      <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
     </td>
   </tr>'
 filerevision = filerevision.tmpl
@@ -258,7 +258,7 @@
       {rename%filelogrename}
     </td>
   </tr>'
-archiveentry = '<li><a href="{url|urlescape}archive/{node|short}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
+archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
 indexentry = '
   <tr class="parity{parity}">
     <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
--- a/mercurial/templates/monoblue/shortlog.tmpl	Tue Jun 16 11:52:10 2015 +0800
+++ b/mercurial/templates/monoblue/shortlog.tmpl	Tue Jun 16 13:59:49 2015 +0800
@@ -21,11 +21,11 @@
             <li><a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a></li>
             <li class="current">shortlog</li>
             <li><a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a></li>
-            <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+            <li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
             <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
             <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
             <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
-            <li><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+            <li><a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a></li>
             {archives%archiveentry}
             <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
         </ul>
--- a/tests/test-hgweb-descend-empties.t	Tue Jun 16 11:52:10 2015 +0800
+++ b/tests/test-hgweb-descend-empties.t	Tue Jun 16 13:59:49 2015 +0800
@@ -294,7 +294,7 @@
               <li><a href="/summary?style=monoblue">summary</a></li>
               <li><a href="/shortlog?style=monoblue">shortlog</a></li>
               <li><a href="/changelog?style=monoblue">changelog</a></li>
-              <li><a href="/graph/c9f45f7a1659?style=monoblue">graph</a></li>
+              <li><a href="/graph/tip?style=monoblue">graph</a></li>
               <li><a href="/tags?style=monoblue">tags</a></li>
               <li><a href="/bookmarks?style=monoblue">bookmarks</a></li>
               <li><a href="/branches?style=monoblue">branches</a></li>
@@ -304,7 +304,7 @@
       </div>
   
       <ul class="submenu">
-          <li><a href="/rev/c9f45f7a1659?style=monoblue">changeset</a></li>
+          <li><a href="/rev/tip?style=monoblue">changeset</a></li>
           
       </ul>
   
@@ -316,7 +316,7 @@
               <td>drwxr-xr-x</td>
               <td></td>
               <td></td>
-              <td><a href="/file/c9f45f7a1659/?style=monoblue">[up]</a></td>
+              <td><a href="/file/tip/?style=monoblue">[up]</a></td>
               <td class="link">&nbsp;</td>
           </tr>
           
@@ -325,30 +325,30 @@
   <td></td>
   <td></td>
   <td>
-  <a href="/file/c9f45f7a1659/a1?style=monoblue">a1</a>
-  <a href="/file/c9f45f7a1659/a1/a2/a3/a4?style=monoblue">a2/a3/a4</a>
+  <a href="/file/tip/a1?style=monoblue">a1</a>
+  <a href="/file/tip/a1/a2/a3/a4?style=monoblue">a2/a3/a4</a>
   </td>
-  <td><a href="/file/c9f45f7a1659/a1?style=monoblue">files</a></td>
+  <td><a href="/file/tip/a1?style=monoblue">files</a></td>
   </tr>
   <tr class="parity0">
   <td>drwxr-xr-x</td>
   <td></td>
   <td></td>
   <td>
-  <a href="/file/c9f45f7a1659/b1?style=monoblue">b1</a>
-  <a href="/file/c9f45f7a1659/b1/b2/b3?style=monoblue">b2/b3</a>
+  <a href="/file/tip/b1?style=monoblue">b1</a>
+  <a href="/file/tip/b1/b2/b3?style=monoblue">b2/b3</a>
   </td>
-  <td><a href="/file/c9f45f7a1659/b1?style=monoblue">files</a></td>
+  <td><a href="/file/tip/b1?style=monoblue">files</a></td>
   </tr>
   <tr class="parity1">
   <td>drwxr-xr-x</td>
   <td></td>
   <td></td>
   <td>
-  <a href="/file/c9f45f7a1659/d1?style=monoblue">d1</a>
-  <a href="/file/c9f45f7a1659/d1/d2?style=monoblue">d2</a>
+  <a href="/file/tip/d1?style=monoblue">d1</a>
+  <a href="/file/tip/d1/d2?style=monoblue">d2</a>
   </td>
-  <td><a href="/file/c9f45f7a1659/d1?style=monoblue">files</a></td>
+  <td><a href="/file/tip/d1?style=monoblue">files</a></td>
   </tr>
           
       </table>
--- a/tests/test-hgweb-symrev.t	Tue Jun 16 11:52:10 2015 +0800
+++ b/tests/test-hgweb-symrev.t	Tue Jun 16 13:59:49 2015 +0800
@@ -619,8 +619,8 @@
   <a href="/file/9d8c40cba617?style=monoblue">files</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/9d8c40cba617?style=monoblue">graph</a></li>
-              <li><a href="/file/9d8c40cba617?style=monoblue">files</a></li>
+              <li><a href="/graph/tip?style=monoblue">graph</a></li>
+              <li><a href="/file/tip?style=monoblue">files</a></li>
               <li><a href="/archive/tip.zip">zip</a></li>
   <a href="/rev/9d8c40cba617?style=monoblue">
   <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
@@ -634,8 +634,8 @@
       <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> 
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/9d8c40cba617?style=monoblue">graph</a></li>
-              <li><a href="/file/9d8c40cba617?style=monoblue">files</a></li>
+              <li><a href="/graph/tip?style=monoblue">graph</a></li>
+              <li><a href="/file/tip?style=monoblue">files</a></li>
               <li><a href="/archive/tip.zip">zip</a></li>
       <h3 class="changelog"><a class="title" href="/rev/9d8c40cba617?style=monoblue">third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a></h3>
   <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
@@ -643,9 +643,9 @@
   <a href="/log/43c799df6e75?style=monoblue">(0)</a>  <a href="/log/tip?style=monoblue">tip</a> 
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=monoblue' | egrep $REVLINKS
-              <li><a href="/file/9d8c40cba617?style=monoblue">files</a></li>
-          <a href="/graph/2?revcount=30&style=monoblue">less</a>
-          <a href="/graph/2?revcount=120&style=monoblue">more</a>
+              <li><a href="/file/tip?style=monoblue">files</a></li>
+          <a href="/graph/tip?revcount=30&style=monoblue">less</a>
+          <a href="/graph/tip?revcount=120&style=monoblue">more</a>
           | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> 
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=monoblue' | egrep $REVLINKS
@@ -667,17 +667,17 @@
   <a href="/file/9d8c40cba617?style=monoblue">files</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/9d8c40cba617?style=monoblue">graph</a></li>
-          <li><a href="/rev/9d8c40cba617?style=monoblue">changeset</a></li>
-          <li><a href="/archive/9d8c40cba617.zip">zip</a></li>
-              <td><a href="/file/9d8c40cba617/?style=monoblue">[up]</a></td>
-  <a href="/file/9d8c40cba617/dir?style=monoblue">dir</a>
-  <a href="/file/9d8c40cba617/dir/?style=monoblue"></a>
-  <td><a href="/file/9d8c40cba617/dir?style=monoblue">files</a></td>
-  <td><a href="/file/9d8c40cba617/foo?style=monoblue">foo</a></td>
-  <a href="/file/9d8c40cba617/foo?style=monoblue">file</a> |
-  <a href="/log/9d8c40cba617/foo?style=monoblue">revisions</a> |
-  <a href="/annotate/9d8c40cba617/foo?style=monoblue">annotate</a>
+              <li><a href="/graph/tip?style=monoblue">graph</a></li>
+          <li><a href="/rev/tip?style=monoblue">changeset</a></li>
+          <li><a href="/archive/tip.zip">zip</a></li>
+              <td><a href="/file/tip/?style=monoblue">[up]</a></td>
+  <a href="/file/tip/dir?style=monoblue">dir</a>
+  <a href="/file/tip/dir/?style=monoblue"></a>
+  <td><a href="/file/tip/dir?style=monoblue">files</a></td>
+  <td><a href="/file/tip/foo?style=monoblue">foo</a></td>
+  <a href="/file/tip/foo?style=monoblue">file</a> |
+  <a href="/log/tip/foo?style=monoblue">revisions</a> |
+  <a href="/annotate/tip/foo?style=monoblue">annotate</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue&rev=all()' | egrep $REVLINKS
               <li><a href="/archive/tip.zip">zip</a></li>
@@ -686,10 +686,10 @@
   <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-          <li><a href="/raw-rev/a7c1559b7bba">raw</a></li>
-          <li><a href="/archive/a7c1559b7bba.zip">zip</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+          <li><a href="/raw-rev/xyzzy">raw</a></li>
+          <li><a href="/archive/xyzzy.zip">zip</a></li>
       <h3 class="changeset"><a href="/raw-rev/a7c1559b7bba">second <span class="logtags"><span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
   <dd><a href="/rev/43c799df6e75?style=monoblue">43c799df6e75</a></dd>
   <dd><a href="/rev/9d8c40cba617?style=monoblue">9d8c40cba617</a></dd>
@@ -701,9 +701,9 @@
   <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-              <li><a href="/archive/tip.zip">zip</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+              <li><a href="/archive/xyzzy.zip">zip</a></li>
   <a href="/rev/a7c1559b7bba?style=monoblue">
   <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
   <a href="/file/a7c1559b7bba?style=monoblue">files</a>
@@ -713,51 +713,51 @@
       <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> 
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-              <li><a href="/archive/tip.zip">zip</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+              <li><a href="/archive/xyzzy.zip">zip</a></li>
       <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
   <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
   <a href="/log/43c799df6e75?style=monoblue">(0)</a>  <a href="/log/tip?style=monoblue">tip</a> 
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=monoblue' | egrep $REVLINKS
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-          <a href="/graph/1?revcount=30&style=monoblue">less</a>
-          <a href="/graph/1?revcount=120&style=monoblue">more</a>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+          <a href="/graph/xyzzy?revcount=30&style=monoblue">less</a>
+          <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a>
           | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> 
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-          <li><a href="/rev/a7c1559b7bba?style=monoblue">changeset</a></li>
-          <li><a href="/archive/a7c1559b7bba.zip">zip</a></li>
-              <td><a href="/file/a7c1559b7bba/?style=monoblue">[up]</a></td>
-  <a href="/file/a7c1559b7bba/dir?style=monoblue">dir</a>
-  <a href="/file/a7c1559b7bba/dir/?style=monoblue"></a>
-  <td><a href="/file/a7c1559b7bba/dir?style=monoblue">files</a></td>
-  <td><a href="/file/a7c1559b7bba/foo?style=monoblue">foo</a></td>
-  <a href="/file/a7c1559b7bba/foo?style=monoblue">file</a> |
-  <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a> |
-  <a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+          <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li>
+          <li><a href="/archive/xyzzy.zip">zip</a></li>
+              <td><a href="/file/xyzzy/?style=monoblue">[up]</a></td>
+  <a href="/file/xyzzy/dir?style=monoblue">dir</a>
+  <a href="/file/xyzzy/dir/?style=monoblue"></a>
+  <td><a href="/file/xyzzy/dir?style=monoblue">files</a></td>
+  <td><a href="/file/xyzzy/foo?style=monoblue">foo</a></td>
+  <a href="/file/xyzzy/foo?style=monoblue">file</a> |
+  <a href="/log/xyzzy/foo?style=monoblue">revisions</a> |
+  <a href="/annotate/xyzzy/foo?style=monoblue">annotate</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba/?style=monoblue">files</a></li>
-          <li><a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a></li>
-          <li><a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a></li>
-          <li><a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a></li>
-          <li><a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a></li>
-          <li><a href="/raw-file/a7c1559b7bba/foo">raw</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy/?style=monoblue">files</a></li>
+          <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
+          <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
+          <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
+          <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
+          <li><a href="/raw-file/xyzzy/foo">raw</a></li>
           <dd><a class="list" href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
   <a href="/file/43c799df6e75/foo?style=monoblue">
   <a href="/file/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-          <li><a href="/file/a7c1559b7bba/foo?style=monoblue">file</a></li>
-          <li><a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a></li>
-          <li><a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a></li>
-          <li><a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+          <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
+          <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
+          <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
+          <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
           <li><a href="/rss-log/tip/foo">rss</a></li>
   <a href="/rev/a7c1559b7bba?style=monoblue">
   <a href="/file/a7c1559b7bba/foo?style=monoblue">file</a>&nbsp;|&nbsp;<a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a>&nbsp;|&nbsp;<a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a>
@@ -766,13 +766,13 @@
       <a href="/log/43c799df6e75/foo?style=monoblue">(0)</a><a href="/log/tip/foo?style=monoblue">tip</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba/?style=monoblue">files</a></li>
-          <li><a href="/file/a7c1559b7bba/foo?style=monoblue">file</a></li>
-          <li><a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a></li>
-          <li><a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a></li>
-          <li><a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a></li>
-          <li><a href="/raw-annotate/a7c1559b7bba/foo">raw</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy/?style=monoblue">files</a></li>
+          <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
+          <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
+          <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
+          <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
+          <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
           <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
   <a href="/annotate/43c799df6e75/foo?style=monoblue">
   <a href="/annotate/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a>
@@ -780,25 +780,25 @@
   <a href="/annotate/a7c1559b7bba/foo?style=monoblue#l2"
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-          <li><a href="/file/a7c1559b7bba/foo?style=monoblue">file</a></li>
-          <li><a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a></li>
-          <li><a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a></li>
-          <li><a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a></li>
-          <li><a href="/raw-diff/a7c1559b7bba/foo">raw</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+          <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
+          <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
+          <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
+          <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
+          <li><a href="/raw-diff/xyzzy/foo">raw</a></li>
           <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
   <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd>
   <dd><a href="/diff/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | egrep $REVLINKS
-              <li><a href="/graph/a7c1559b7bba?style=monoblue">graph</a></li>
-              <li><a href="/file/a7c1559b7bba?style=monoblue">files</a></li>
-          <li><a href="/file/a7c1559b7bba/foo?style=monoblue">file</a></li>
-          <li><a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a></li>
-          <li><a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a></li>
-          <li><a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a></li>
-          <li><a href="/raw-diff/a7c1559b7bba/foo">raw</a></li>
+              <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
+              <li><a href="/file/xyzzy?style=monoblue">files</a></li>
+          <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
+          <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
+          <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
+          <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
+          <li><a href="/raw-diff/xyzzy/foo">raw</a></li>
           <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
   <dd><a href="/comparison/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd>
   <dd><a href="/comparison/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd>