diff --git a/mercurial/templates/spartan/changelog.tmpl b/mercurial/templates/spartan/changelog.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2NoYW5nZWxvZy50bXBs..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2NoYW5nZWxvZy50bXBs 100644
--- a/mercurial/templates/spartan/changelog.tmpl
+++ b/mercurial/templates/spartan/changelog.tmpl
@@ -8,7 +8,7 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -12,7 +12,7 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
+<a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a>
 {archives%archiveentry}
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 <a type="application/rss+xml" href="{url|urlescape}rss-log">rss</a>
diff --git a/mercurial/templates/spartan/changeset.tmpl b/mercurial/templates/spartan/changeset.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2NoYW5nZXNldC50bXBs..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2NoYW5nZXNldC50bXBs 100644
--- a/mercurial/templates/spartan/changeset.tmpl
+++ b/mercurial/templates/spartan/changeset.tmpl
@@ -4,8 +4,8 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url|urlescape}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -9,8 +9,8 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
-<a href="{url|urlescape}raw-rev/{node|short}">raw</a>
+<a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a>
+<a href="{url|urlescape}raw-rev/{symrev}">raw</a>
 {archives%archiveentry}
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 </div>
diff --git a/mercurial/templates/spartan/fileannotate.tmpl b/mercurial/templates/spartan/fileannotate.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVhbm5vdGF0ZS50bXBs..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVhbm5vdGF0ZS50bXBs 100644
--- a/mercurial/templates/spartan/fileannotate.tmpl
+++ b/mercurial/templates/spartan/fileannotate.tmpl
@@ -4,8 +4,8 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url|urlescape}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -9,11 +9,11 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-<a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
-<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}raw-annotate/{node|short}/{file|urlescape}">raw</a>
+<a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a>
+<a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</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}raw-annotate/{symrev}/{file|urlescape}">raw</a>
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 </div>
 
diff --git a/mercurial/templates/spartan/filediff.tmpl b/mercurial/templates/spartan/filediff.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVkaWZmLnRtcGw=..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVkaWZmLnRtcGw= 100644
--- a/mercurial/templates/spartan/filediff.tmpl
+++ b/mercurial/templates/spartan/filediff.tmpl
@@ -4,8 +4,8 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url|urlescape}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -9,11 +9,11 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-<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}raw-diff/{node|short}/{file|urlescape}">raw</a>
+<a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</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>
+<a href="{url|urlescape}raw-diff/{symrev}/{file|urlescape}">raw</a>
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 </div>
 
diff --git a/mercurial/templates/spartan/filelog.tmpl b/mercurial/templates/spartan/filelog.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVsb2cudG1wbA==..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVsb2cudG1wbA== 100644
--- a/mercurial/templates/spartan/filelog.tmpl
+++ b/mercurial/templates/spartan/filelog.tmpl
@@ -13,8 +13,8 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</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}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 <a type="application/rss+xml" href="{url|urlescape}rss-log/tip/{file|urlescape}">rss</a>
 <a type="application/atom+xml" href="{url|urlescape}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">atom</a>
diff --git a/mercurial/templates/spartan/filerevision.tmpl b/mercurial/templates/spartan/filerevision.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVyZXZpc2lvbi50bXBs..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2ZpbGVyZXZpc2lvbi50bXBs 100644
--- a/mercurial/templates/spartan/filerevision.tmpl
+++ b/mercurial/templates/spartan/filerevision.tmpl
@@ -4,8 +4,8 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url|urlescape}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -9,11 +9,11 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-<a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</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}raw-file/{node|short}/{file|urlescape}">raw</a>
+<a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a>
+<a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</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>
+<a href="{url|urlescape}raw-file/{symrev}/{file|urlescape}">raw</a>
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 </div>
 
diff --git a/mercurial/templates/spartan/graph.tmpl b/mercurial/templates/spartan/graph.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2dyYXBoLnRtcGw=..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL2dyYXBoLnRtcGw= 100644
--- a/mercurial/templates/spartan/graph.tmpl
+++ b/mercurial/templates/spartan/graph.tmpl
@@ -13,7 +13,7 @@
 <a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}file/{node|short}/{sessionvars%urlparameter}">files</a>
+<a href="{url|urlescape}file/{symrev}/{sessionvars%urlparameter}">files</a>
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 </div>
 
diff --git a/mercurial/templates/spartan/manifest.tmpl b/mercurial/templates/spartan/manifest.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL21hbmlmZXN0LnRtcGw=..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL21hbmlmZXN0LnRtcGw= 100644
--- a/mercurial/templates/spartan/manifest.tmpl
+++ b/mercurial/templates/spartan/manifest.tmpl
@@ -4,8 +4,8 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url|urlescape}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -9,7 +9,7 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+<a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a>
 {archives%archiveentry}
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 </div>
@@ -21,7 +21,7 @@
   <td><tt>drwxr-xr-x</tt>&nbsp;
   <td>&nbsp;
   <td>&nbsp;
-  <td><a href="{url|urlescape}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
+  <td><a href="{url|urlescape}file/{symrev}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
 </tr>
 {dentries%direntry}
 {fentries%fileentry}
diff --git a/mercurial/templates/spartan/map b/mercurial/templates/spartan/map
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL21hcA==..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL21hcA== 100644
--- a/mercurial/templates/spartan/map
+++ b/mercurial/templates/spartan/map
@@ -31,8 +31,8 @@
     <td>&nbsp;
     <td>&nbsp;
     <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}">
+      <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|urlescape}
       </a>'
 
@@ -41,7 +41,7 @@
     <td><tt>{permissions|permissions}</tt>&nbsp;
     <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
     <td align=right><tt>{size}</tt>&nbsp;
-    <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
+    <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
 
 filerevision = filerevision.tmpl
 fileannotate = fileannotate.tmpl
@@ -183,7 +183,7 @@
     </td>
   </tr>'
 index = index.tmpl
-archiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
+archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
 notfound = notfound.tmpl
 error = error.tmpl
 urlparameter = '{separator}{name}={value|urlescape}'
diff --git a/mercurial/templates/spartan/shortlog.tmpl b/mercurial/templates/spartan/shortlog.tmpl
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL3Nob3J0bG9nLnRtcGw=..1cac419ab8313199c87868c9c32295228be19342_bWVyY3VyaWFsL3RlbXBsYXRlcy9zcGFydGFuL3Nob3J0bG9nLnRtcGw= 100644
--- a/mercurial/templates/spartan/shortlog.tmpl
+++ b/mercurial/templates/spartan/shortlog.tmpl
@@ -8,7 +8,7 @@
 <body>
 
 <div class="buttons">
-<a href="{url|urlescape}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
@@ -12,7 +12,7 @@
 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a>
 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url|urlescape}file/{node|short}/{sessionvars%urlparameter}">files</a>
+<a href="{url|urlescape}file/{symrev}/{sessionvars%urlparameter}">files</a>
 {archives%archiveentry}
 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
 <a type="application/rss+xml" href="{url|urlescape}rss-log">rss</a>
diff --git a/tests/test-hgweb-descend-empties.t b/tests/test-hgweb-descend-empties.t
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_dGVzdHMvdGVzdC1oZ3dlYi1kZXNjZW5kLWVtcHRpZXMudA==..1cac419ab8313199c87868c9c32295228be19342_dGVzdHMvdGVzdC1oZ3dlYi1kZXNjZW5kLWVtcHRpZXMudA== 100644
--- a/tests/test-hgweb-descend-empties.t
+++ b/tests/test-hgweb-descend-empties.t
@@ -500,8 +500,8 @@
   <body>
   
   <div class="buttons">
-  <a href="/log/0?style=spartan">changelog</a>
-  <a href="/shortlog/0?style=spartan">shortlog</a>
+  <a href="/log/tip?style=spartan">changelog</a>
+  <a href="/shortlog/tip?style=spartan">shortlog</a>
   <a href="/graph?style=spartan">graph</a>
   <a href="/tags?style=spartan">tags</a>
   <a href="/branches?style=spartan">branches</a>
@@ -505,7 +505,7 @@
   <a href="/graph?style=spartan">graph</a>
   <a href="/tags?style=spartan">tags</a>
   <a href="/branches?style=spartan">branches</a>
-  <a href="/rev/c9f45f7a1659?style=spartan">changeset</a>
+  <a href="/rev/tip?style=spartan">changeset</a>
   
   <a href="/help?style=spartan">help</a>
   </div>
@@ -517,7 +517,7 @@
     <td><tt>drwxr-xr-x</tt>&nbsp;
     <td>&nbsp;
     <td>&nbsp;
-    <td><a href="/file/c9f45f7a1659/?style=spartan">[up]</a>
+    <td><a href="/file/tip/?style=spartan">[up]</a>
   </tr>
   
   <tr class="parity1">
@@ -525,8 +525,8 @@
   <td>&nbsp;
   <td>&nbsp;
   <td>
-  <a href="/file/c9f45f7a1659/a1?style=spartan">a1/</a>
-  <a href="/file/c9f45f7a1659/a1/a2/a3/a4?style=spartan">
+  <a href="/file/tip/a1?style=spartan">a1/</a>
+  <a href="/file/tip/a1/a2/a3/a4?style=spartan">
   a2/a3/a4
   </a>
   <tr class="parity0">
@@ -534,8 +534,8 @@
   <td>&nbsp;
   <td>&nbsp;
   <td>
-  <a href="/file/c9f45f7a1659/b1?style=spartan">b1/</a>
-  <a href="/file/c9f45f7a1659/b1/b2/b3?style=spartan">
+  <a href="/file/tip/b1?style=spartan">b1/</a>
+  <a href="/file/tip/b1/b2/b3?style=spartan">
   b2/b3
   </a>
   <tr class="parity1">
@@ -543,8 +543,8 @@
   <td>&nbsp;
   <td>&nbsp;
   <td>
-  <a href="/file/c9f45f7a1659/d1?style=spartan">d1/</a>
-  <a href="/file/c9f45f7a1659/d1/d2?style=spartan">
+  <a href="/file/tip/d1?style=spartan">d1/</a>
+  <a href="/file/tip/d1/d2?style=spartan">
   d2
   </a>
   
diff --git a/tests/test-hgweb-filelog.t b/tests/test-hgweb-filelog.t
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_dGVzdHMvdGVzdC1oZ3dlYi1maWxlbG9nLnQ=..1cac419ab8313199c87868c9c32295228be19342_dGVzdHMvdGVzdC1oZ3dlYi1maWxlbG9nLnQ= 100644
--- a/tests/test-hgweb-filelog.t
+++ b/tests/test-hgweb-filelog.t
@@ -674,8 +674,8 @@
   <a href="/graph?style=spartan">graph</a>
   <a href="/tags?style=spartan">tags</a>
   <a href="/branches?style=spartan">branches</a>
-  <a href="/file/46c1a66bd8fc/c?style=spartan">file</a>
-  <a href="/annotate/46c1a66bd8fc/c?style=spartan">annotate</a>
+  <a href="/file/tip/c?style=spartan">file</a>
+  <a href="/annotate/tip/c?style=spartan">annotate</a>
   <a href="/help?style=spartan">help</a>
   <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
   <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
diff --git a/tests/test-hgweb-symrev.t b/tests/test-hgweb-symrev.t
index 85fb416f2fa7b1db5c63370441f1a49c43c57928_dGVzdHMvdGVzdC1oZ3dlYi1zeW1yZXYudA==..1cac419ab8313199c87868c9c32295228be19342_dGVzdHMvdGVzdC1oZ3dlYi1zeW1yZXYudA== 100644
--- a/tests/test-hgweb-symrev.t
+++ b/tests/test-hgweb-symrev.t
@@ -806,8 +806,8 @@
 (De)referencing symbolic revisions (spartan)
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan' | egrep $REVLINKS
-  <a href="/log/2?style=spartan">changelog</a>
-  <a href="/file/9d8c40cba617/?style=spartan">files</a>
+  <a href="/log/tip?style=spartan">changelog</a>
+  <a href="/file/tip/?style=spartan">files</a>
   <a href="/archive/tip.zip">zip</a> 
   navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
     <td class="node"><a href="/rev/9d8c40cba617?style=spartan">third</a></td>
@@ -816,8 +816,8 @@
   navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=spartan' | egrep $REVLINKS
-  <a href="/shortlog/2?style=spartan">shortlog</a>
-  <a href="/file/9d8c40cba617?style=spartan">files</a>
+  <a href="/shortlog/tip?style=spartan">shortlog</a>
+  <a href="/file/tip?style=spartan">files</a>
   <a href="/archive/tip.zip">zip</a> 
   navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a>  <a href="/log/tip?style=spartan">tip</a> </small>
     <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
@@ -832,7 +832,7 @@
   navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a>  <a href="/log/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=spartan' | egrep $REVLINKS
-  <a href="/file/9d8c40cba617/?style=spartan">files</a>
+  <a href="/file/tip/?style=spartan">files</a>
   navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
   navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
 
@@ -843,8 +843,8 @@
   <a href="/shortlog/9d8c40cba617?style=spartan" class="open">default</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=spartan' | egrep $REVLINKS
-  <a href="/log/2?style=spartan">changelog</a>
-  <a href="/shortlog/2?style=spartan">shortlog</a>
-  <a href="/rev/9d8c40cba617?style=spartan">changeset</a>
-  <a href="/archive/9d8c40cba617.zip">zip</a> 
+  <a href="/log/tip?style=spartan">changelog</a>
+  <a href="/shortlog/tip?style=spartan">shortlog</a>
+  <a href="/rev/tip?style=spartan">changeset</a>
+  <a href="/archive/tip.zip">zip</a> 
   <h2><a href="/">Mercurial</a>  / files for changeset <a href="/rev/9d8c40cba617">9d8c40cba617</a>: /</h2>
@@ -850,8 +850,8 @@
   <h2><a href="/">Mercurial</a>  / files for changeset <a href="/rev/9d8c40cba617">9d8c40cba617</a>: /</h2>
-    <td><a href="/file/9d8c40cba617/?style=spartan">[up]</a>
-  <a href="/file/9d8c40cba617/dir?style=spartan">dir/</a>
-  <a href="/file/9d8c40cba617/dir/?style=spartan">
-  <td><a href="/file/9d8c40cba617/foo?style=spartan">foo</a>
+    <td><a href="/file/tip/?style=spartan">[up]</a>
+  <a href="/file/tip/dir?style=spartan">dir/</a>
+  <a href="/file/tip/dir/?style=spartan">
+  <td><a href="/file/tip/foo?style=spartan">foo</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan&rev=all()' | egrep $REVLINKS
   <a href="/archive/tip.zip">zip</a> 
@@ -870,14 +870,14 @@
     <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=spartan' | egrep $REVLINKS
-  <a href="/log/1?style=spartan">changelog</a>
-  <a href="/shortlog/1?style=spartan">shortlog</a>
-  <a href="/file/a7c1559b7bba?style=spartan">files</a>
-  <a href="/raw-rev/a7c1559b7bba">raw</a>
-  <a href="/archive/a7c1559b7bba.zip">zip</a> 
+  <a href="/log/xyzzy?style=spartan">changelog</a>
+  <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
+  <a href="/file/xyzzy?style=spartan">files</a>
+  <a href="/raw-rev/xyzzy">raw</a>
+  <a href="/archive/xyzzy.zip">zip</a> 
    <td class="changeset"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
   <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
   <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
    <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=spartan' | egrep $REVLINKS
@@ -878,15 +878,15 @@
    <td class="changeset"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
   <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
   <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
    <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=spartan' | egrep $REVLINKS
-  <a href="/log/1?style=spartan">changelog</a>
-  <a href="/file/a7c1559b7bba/?style=spartan">files</a>
-  <a href="/archive/tip.zip">zip</a> 
+  <a href="/log/xyzzy?style=spartan">changelog</a>
+  <a href="/file/xyzzy/?style=spartan">files</a>
+  <a href="/archive/xyzzy.zip">zip</a> 
   navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
     <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">second</a></td>
     <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td>
   navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=spartan' | egrep $REVLINKS
@@ -887,12 +887,12 @@
   navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
     <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">second</a></td>
     <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td>
   navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=spartan' | egrep $REVLINKS
-  <a href="/shortlog/1?style=spartan">shortlog</a>
-  <a href="/file/a7c1559b7bba?style=spartan">files</a>
-  <a href="/archive/tip.zip">zip</a> 
+  <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
+  <a href="/file/xyzzy?style=spartan">files</a>
+  <a href="/archive/xyzzy.zip">zip</a> 
   navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a>  <a href="/log/tip?style=spartan">tip</a> </small>
     <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
     <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
@@ -903,8 +903,8 @@
   navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a>  <a href="/log/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=spartan' | egrep $REVLINKS
-  <a href="/file/a7c1559b7bba/?style=spartan">files</a>
+  <a href="/file/xyzzy/?style=spartan">files</a>
   navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
   navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=spartan' | egrep $REVLINKS
@@ -907,9 +907,9 @@
   navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
   navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=spartan' | egrep $REVLINKS
-  <a href="/log/1?style=spartan">changelog</a>
-  <a href="/shortlog/1?style=spartan">shortlog</a>
-  <a href="/rev/a7c1559b7bba?style=spartan">changeset</a>
-  <a href="/archive/a7c1559b7bba.zip">zip</a> 
+  <a href="/log/xyzzy?style=spartan">changelog</a>
+  <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
+  <a href="/rev/xyzzy?style=spartan">changeset</a>
+  <a href="/archive/xyzzy.zip">zip</a> 
   <h2><a href="/">Mercurial</a>  / files for changeset <a href="/rev/a7c1559b7bba">a7c1559b7bba</a>: /</h2>
@@ -915,7 +915,7 @@
   <h2><a href="/">Mercurial</a>  / files for changeset <a href="/rev/a7c1559b7bba">a7c1559b7bba</a>: /</h2>
-    <td><a href="/file/a7c1559b7bba/?style=spartan">[up]</a>
-  <a href="/file/a7c1559b7bba/dir?style=spartan">dir/</a>
-  <a href="/file/a7c1559b7bba/dir/?style=spartan">
-  <td><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a>
+    <td><a href="/file/xyzzy/?style=spartan">[up]</a>
+  <a href="/file/xyzzy/dir?style=spartan">dir/</a>
+  <a href="/file/xyzzy/dir/?style=spartan">
+  <td><a href="/file/xyzzy/foo?style=spartan">foo</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=spartan' | egrep $REVLINKS
@@ -920,12 +920,12 @@
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=spartan' | egrep $REVLINKS
-  <a href="/log/1?style=spartan">changelog</a>
-  <a href="/shortlog/1?style=spartan">shortlog</a>
-  <a href="/rev/a7c1559b7bba?style=spartan">changeset</a>
-  <a href="/file/a7c1559b7bba/?style=spartan">files</a>
-  <a href="/log/a7c1559b7bba/foo?style=spartan">revisions</a>
-  <a href="/annotate/a7c1559b7bba/foo?style=spartan">annotate</a>
-  <a href="/raw-file/a7c1559b7bba/foo">raw</a>
+  <a href="/log/xyzzy?style=spartan">changelog</a>
+  <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
+  <a href="/rev/xyzzy?style=spartan">changeset</a>
+  <a href="/file/xyzzy/?style=spartan">files</a>
+  <a href="/log/xyzzy/foo?style=spartan">revisions</a>
+  <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
+  <a href="/raw-file/xyzzy/foo">raw</a>
    <td><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
   <a href="/file/43c799df6e75/foo?style=spartan">
   <td><a href="/file/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td>
@@ -933,8 +933,8 @@
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=spartan' | egrep $REVLINKS
      href="/atom-log/tip/foo" title="Atom feed for test:foo">
      href="/rss-log/tip/foo" title="RSS feed for test:foo">
-  <a href="/file/a7c1559b7bba/foo?style=spartan">file</a>
-  <a href="/annotate/a7c1559b7bba/foo?style=spartan">annotate</a>
+  <a href="/file/xyzzy/foo?style=spartan">file</a>
+  <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
   <a type="application/rss+xml" href="/rss-log/tip/foo">rss</a>
   <a type="application/atom+xml" href="/atom-log/tip/foo" title="Atom feed for test:foo">atom</a>
   <p>navigate: <small class="navigate"><a href="/log/43c799df6e75/foo?style=spartan">(0)</a> <a href="/log/tip/foo?style=spartan">tip</a> </small></p>
@@ -948,13 +948,13 @@
      <a href="/annotate/43c799df6e75/foo?style=spartan">(annotate)</a>
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=spartan' | egrep $REVLINKS
-  <a href="/log/1?style=spartan">changelog</a>
-  <a href="/shortlog/1?style=spartan">shortlog</a>
-  <a href="/rev/a7c1559b7bba?style=spartan">changeset</a>
-  <a href="/file/a7c1559b7bba/?style=spartan">files</a>
-  <a href="/file/a7c1559b7bba/foo?style=spartan">file</a>
-  <a href="/log/a7c1559b7bba/foo?style=spartan">revisions</a>
-  <a href="/raw-annotate/a7c1559b7bba/foo">raw</a>
+  <a href="/log/xyzzy?style=spartan">changelog</a>
+  <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
+  <a href="/rev/xyzzy?style=spartan">changeset</a>
+  <a href="/file/xyzzy/?style=spartan">files</a>
+  <a href="/file/xyzzy/foo?style=spartan">file</a>
+  <a href="/log/xyzzy/foo?style=spartan">revisions</a>
+  <a href="/raw-annotate/xyzzy/foo">raw</a>
    <td><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
   <a href="/annotate/43c799df6e75/foo?style=spartan">
   <td><a href="/annotate/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td>
@@ -962,13 +962,13 @@
   <a href="/annotate/a7c1559b7bba/foo?style=spartan#l2"
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=spartan' | egrep $REVLINKS
-  <a href="/log/1?style=spartan">changelog</a>
-  <a href="/shortlog/1?style=spartan">shortlog</a>
-  <a href="/rev/a7c1559b7bba?style=spartan">changeset</a>
-  <a href="/file/a7c1559b7bba/foo?style=spartan">file</a>
-  <a href="/log/a7c1559b7bba/foo?style=spartan">revisions</a>
-  <a href="/annotate/a7c1559b7bba/foo?style=spartan">annotate</a>
-  <a href="/raw-diff/a7c1559b7bba/foo">raw</a>
+  <a href="/log/xyzzy?style=spartan">changelog</a>
+  <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
+  <a href="/rev/xyzzy?style=spartan">changeset</a>
+  <a href="/file/xyzzy/foo?style=spartan">file</a>
+  <a href="/log/xyzzy/foo?style=spartan">revisions</a>
+  <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
+  <a href="/raw-diff/xyzzy/foo">raw</a>
    <td class="revision"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
   <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
   <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>