diff --git a/trac/versioncontrol/admin.py b/trac/versioncontrol/admin.py
--- a/trac/versioncontrol/admin.py
+++ b/trac/versioncontrol/admin.py
@@ -299,7 +299,9 @@
         if not info.get('alias'):
             try:
                 repos = RepositoryManager(self.env).get_repository(reponame)
-                info['rev'] = repos.get_youngest_rev()
+                youngest_rev = repos.get_youngest_rev()
+                info['rev'] = youngest_rev
+                info['display_rev'] = repos.display_rev(youngest_rev)
             except Exception:
                 pass
         return info
diff --git a/trac/versioncontrol/api.py b/trac/versioncontrol/api.py
--- a/trac/versioncontrol/api.py
+++ b/trac/versioncontrol/api.py
@@ -856,7 +856,7 @@
         raise NotImplementedError
 
     def normalize_rev(self, rev):
-        """Return a canonical representation of a revision.
+        """Return a (unique) canonical representation of a revision.
 
         It's up to the backend to decide which string values of `rev` 
         (usually provided by the user) should be accepted, and how they 
@@ -871,6 +871,15 @@
     def short_rev(self, rev):
         """Return a compact representation of a revision in the repos."""
         return self.normalize_rev(rev)
+
+    def display_rev(self, rev):
+        """Return a representation of a revision in the repos for displaying to
+        the user.
+        
+        This can be a shortened revision string, e.g. for repositories using
+        long hashes.
+        """
+        return self.normalize_rev(rev)
         
     def get_changes(self, old_path, old_rev, new_path, new_rev,
                     ignore_ancestry=1):
diff --git a/trac/versioncontrol/templates/admin_repositories.html b/trac/versioncontrol/templates/admin_repositories.html
--- a/trac/versioncontrol/templates/admin_repositories.html
+++ b/trac/versioncontrol/templates/admin_repositories.html
@@ -136,7 +136,7 @@
                   <py:when test="info.dir">$info.prettydir</py:when>
                   <em py:otherwise="">Alias of $info.alias</em>
                 </td>
-                <td><a py:if="info.rev" href="${href.changeset(info.rev, reponame) or None}">$info.rev</a></td>
+                <td><a py:if="info.rev" href="${href.changeset(info.rev, reponame) or None}">$info.display_rev</a></td>
               </tr>
             </tbody>
           </table>
diff --git a/trac/versioncontrol/templates/browser.html b/trac/versioncontrol/templates/browser.html
--- a/trac/versioncontrol/templates/browser.html
+++ b/trac/versioncontrol/templates/browser.html
@@ -106,7 +106,7 @@
       <table py:if="properties or file" id="info" summary="Revision info">
         <tr py:if="file">
           <th scope="col" i18n:msg="rev, size, author, date">
-            Revision <a href="${href.changeset(rev, reponame)}">$rev</a>,
+            Revision <a href="${href.changeset(rev, reponame)}">${display_rev(rev)}</a>,
             <span title="${_('%(size)s bytes', size=file.size)}">${pretty_size(file.size)}</span>
             checked in by ${authorinfo(file.changeset.author)}, ${dateinfo(file.changeset.date)} ago
             (<a href="${href.changeset(rev, reponame, created_path)}">diff</a>)
diff --git a/trac/versioncontrol/templates/changeset.html b/trac/versioncontrol/templates/changeset.html
--- a/trac/versioncontrol/templates/changeset.html
+++ b/trac/versioncontrol/templates/changeset.html
@@ -27,48 +27,50 @@
           log_href = href.log(reponame, new_path, rev=new_rev, stop_rev=old_rev);
           new_href = href.browser(reponame, new_path, rev=new_rev);
           old_href = href.browser(reponame, old_path, rev=old_rev);
+          old_drev = display_rev(old_rev);
+          new_drev = display_rev(new_rev);
             ">
         <py:when test="reponame">
           <py:choose>
             <h1 py:when="changeset and restricted" i18n:msg="new_rev, reponame, new_path">
-              Changeset <a title="Show full changeset" href="cset_href">$new_rev</a> in $reponame
+              Changeset <a title="Show full changeset" href="$cset_href">$new_drev</a> in $reponame
               for <a title="Show entry in browser" href="$new_href">$new_path</a>
             </h1>
             <h1 py:when="not changeset and restricted" i18n:msg="new_path, old_rev, new_rev, reponame">
               Changes in <a title="Show entry in browser" href="$new_href">$new_path</a>
-              <a title="Show revision log" href="$log_href">[$old_rev:$new_rev]</a> in $reponame
+              <a title="Show revision log" href="$log_href">[$old_drev:$new_drev]</a> in $reponame
             </h1>
             <h1 py:when="not changeset and not restricted" i18n:msg="reponame, old_path, old_rev, new_path, new_rev">
               Changes in $reponame
               from <a title="Show entry in browser" href="$old_href">$old_path</a>
-              at <a title="Show full changeset" href="$old_cset_href">r$old_rev</a>
+              at <a title="Show full changeset" href="$old_cset_href">r$old_drev</a>
               to <a title="Show entry in browser" href="$new_href">$new_path</a>
-              at <a title="Show full changeset" href="$cset_href">r$new_rev</a>
+              at <a title="Show full changeset" href="$cset_href">r$new_drev</a>
             </h1>
             <h1 py:otherwise="" i18n:msg="new_rev, reponame">
-              Changeset <a py:strip="not annotated" href="$cset_href">$new_rev</a> in $reponame
+              Changeset <a py:strip="not annotated" href="$cset_href">$new_drev</a> in $reponame
             </h1>
           </py:choose>
         </py:when>
         <py:otherwise>
           <py:choose>
             <h1 py:when="changeset and restricted" i18n:msg="new_rev, new_path">
-              Changeset <a title="Show full changeset" href="$cset_href">$new_rev</a>
+              Changeset <a title="Show full changeset" href="$cset_href">$new_drev</a>
               for <a title="Show entry in browser" href="$new_href">$new_path</a>
             </h1>
             <h1 py:when="not changeset and restricted" i18n:msg="new_path, old_rev, new_rev">
               Changes in <a title="Show entry in browser" href="$new_href">$new_path</a>
-              <a title="Show revision log" href="$log_href">[$old_rev:$new_rev]</a>
+              <a title="Show revision log" href="$log_href">[$old_drev:$new_drev]</a>
             </h1>
             <h1 py:when="not changeset and not restricted" i18n:msg="old_path, old_rev, new_path, new_rev">
               Changes
               from <a title="Show entry in browser" href="$old_href">$old_path</a>
-              at <a title="Show full changeset" href="$old_cset_href">r$old_rev</a>
+              at <a title="Show full changeset" href="$old_cset_href">r$old_drev</a>
               to <a title="Show entry in browser" href="$new_href">$new_path</a>
-              at <a title="Show full changeset" href="$cset_href">r$new_rev</a>
+              at <a title="Show full changeset" href="$cset_href">r$new_drev</a>
             </h1>
             <h1 py:otherwise="" i18n:msg="new_rev">
-              Changeset <a py:strip="not annotated" href="$cset_href">$new_rev</a>
+              Changeset <a py:strip="not annotated" href="$cset_href">$new_drev</a>
             </h1>
           </py:choose>
         </py:otherwise>
@@ -97,7 +99,7 @@
           <div class="$cl"> </div>
           <py:choose>
           <a py:when="is_removal" href="$item.old.href"
-             title="${_('Show what was removed (content at revision %(old_rev)s)', old_rev=item.old.rev)}">
+             title="${_('Show what was removed (content at revision %(old_rev)s)', old_rev=display_rev(item.old.rev))}">
               $path
             </a>
             <a py:otherwise="" title="Show entry in browser" href="$item.new.href">
@@ -108,7 +110,7 @@
           <py:if test="item.old and item.old.get('path') and item.change == 'copy' or item.change == 'move'">
             <small><em i18n:msg="kind, old_path">
               ($kind from <a href="$item.old.href"
-                             title="${_('Show original file (revision %(old_rev)s)', old_rev=item.old.rev)}">
+                             title="${_('Show original file (revision %(old_rev)s)', old_rev=display_rev(item.old.rev))}">
                 $item.old.path</a>)
             </em></small>
           </py:if>
diff --git a/trac/versioncontrol/templates/dir_entries.html b/trac/versioncontrol/templates/dir_entries.html
--- a/trac/versioncontrol/templates/dir_entries.html
+++ b/trac/versioncontrol/templates/dir_entries.html
@@ -16,7 +16,7 @@
           <span title="${_('%(size)s bytes', size=entry.content_length)}">${pretty_size(entry.content_length)}</span>
         </td>
         <td class="rev">
-          <a title="View Revision Log" href="${href.log(reponame, entry.path, rev=rev)}">$entry.rev</a>
+          <a title="View Revision Log" href="${href.log(reponame, entry.path, rev=rev)}">${display_rev(entry.rev)}</a>
           <a title="View Changeset" class="chgset" href="${href.changeset(change.rev, reponame)}">&nbsp;</a>
         </td>
         <td class="age" style="${chgset_view and dir.timerange and 'border-color: rgb(%s,%s,%s)' %
diff --git a/trac/versioncontrol/templates/path_links.html b/trac/versioncontrol/templates/path_links.html
--- a/trac/versioncontrol/templates/path_links.html
+++ b/trac/versioncontrol/templates/path_links.html
@@ -28,9 +28,9 @@
       >$part.name</a><py:if test="not last"
         ><span class="pathentry sep">/</span></py:if></py:with></py:for>
 <!--! @ revision        (FIXME check the data, this can sometimes be wrong) -->
-<py:if test="rev"><span class="pathentry sep">@</span>
+<py:if test="rev" py:with="drev = display_rev(rev)"><span class="pathentry sep">@</span>
   <a class="pathentry" href="${href.changeset(rev, reponame)}" 
-     title="${_('View changeset %(rev)s', rev=rev)}">$rev</a>
+     title="${_('View changeset %(rev)s', rev=drev)}">$drev</a>
 </py:if>
 <br style="clear: both" />
 
diff --git a/trac/versioncontrol/templates/repository_index.html b/trac/versioncontrol/templates/repository_index.html
--- a/trac/versioncontrol/templates/repository_index.html
+++ b/trac/versioncontrol/templates/repository_index.html
@@ -20,7 +20,7 @@
           <td class="size" />
           <td class="rev">
             <py:if test="not err">
-              <a title="View Revision Log" href="${href.log(repos.reponame)}">$change.rev</a>
+              <a title="View Revision Log" href="${href.log(repos.reponame)}">${repos.display_rev(change.rev)}</a>
               <a title="View Changeset" class="chgset" href="${href.changeset(change.rev, repos.reponame)}">&nbsp;</a>
             </py:if>
           </td>
diff --git a/trac/versioncontrol/templates/revisionlog.html b/trac/versioncontrol/templates/revisionlog.html
--- a/trac/versioncontrol/templates/revisionlog.html
+++ b/trac/versioncontrol/templates/revisionlog.html
@@ -123,10 +123,10 @@
                   <td class="diff">
                     <input type="radio" name="old" value="${item.rev}@${item.path}"
                            checked="${idx == (len(items) - 1) or None}" 
-                           title="${_('From r%(rev)s', rev=item.rev)}" />
+                           title="${_('From [%(rev)s]', rev=display_rev(item.rev))}" />
                     <input type="radio" name="new" value="${item.rev}@${item.path}"
                            checked="${idx == 0 or None}" 
-                           title="${_('To r%(rev)s', rev=item.rev)}" />
+                           title="${_('To [%(rev)s]', rev=display_rev(item.rev))}" />
                   </td>
                   <py:when test="not is_separator">
                     <td class="change" style="padding-left: ${item.depth}em">
@@ -138,14 +138,14 @@
                     </td>
                     <td class="rev">
                       <a href="${href.browser(reponame, item.path, rev=item.existing_rev)}"
-                         title="${_('Browse at revision %(rev)s', rev=item.existing_rev)}">
-                        @$item.existing_rev</a>
+                         title="${_('Browse at revision %(rev)s', rev=display_rev(item.existing_rev))}">
+                        @${display_rev(item.existing_rev)}</a>
                       <py:choose test="item.change">
                         <a py:when="'delete'" class="chgset" href="${href.changeset(item.rev)}"
-                           title="${_('View removal changeset [%(rev)s]', rev=item.rev)}">&nbsp;</a>
+                           title="${_('View removal changeset [%(rev)s]', rev=display_rev(item.rev))}">&nbsp;</a>
                         <a py:otherwise="" class="chgset" href="${href.changeset(item.rev, reponame, item.path)}"
                            title="${_('View changeset [%(rev)s] restricted to %(path)s',
-                                      rev=item.rev, path=item.path)}">&nbsp;</a>
+                                      rev=display_rev(item.rev), path=item.path or '/')}">&nbsp;</a>
                       </py:choose>
                     </td>
                     <td class="age" py:content="dateinfo(change.date)" />
diff --git a/trac/versioncontrol/templates/revisionlog.rss b/trac/versioncontrol/templates/revisionlog.rss
--- a/trac/versioncontrol/templates/revisionlog.rss
+++ b/trac/versioncontrol/templates/revisionlog.rss
@@ -19,7 +19,7 @@
                    item_context = context('changeset', change.rev, parent=repos.resource)">
       <xi:include href="author_or_creator.rss" py:with="author = change.author"/>
       <pubDate>${http_date(change.date)}</pubDate>
-      <title>Revision $item.rev: ${shorten_line(change.message)}</title>
+      <title>Revision ${display_rev(item.rev)}: ${shorten_line(change.message)}</title>
       <link>${abs_href.changeset(item.rev, reponame, item.path)}</link>
       <guid isPermaLink="false">${abs_href.changeset(item.rev, reponame, item.path)}</guid>
       <description py:with="m = change.message">${
diff --git a/trac/versioncontrol/templates/revisionlog.txt b/trac/versioncontrol/templates/revisionlog.txt
--- a/trac/versioncontrol/templates/revisionlog.txt
+++ b/trac/versioncontrol/templates/revisionlog.txt
@@ -6,7 +6,7 @@
  
 {% for item in items %}\
 {%   with change = changes[item.rev]; extra = extra_changes[item.rev] %}\
-${http_date(change.date)} ${format_author(change.author)} [$item.rev]
+${http_date(change.date)} ${format_author(change.author)} [${display_rev(item.rev)}]
 {%     for idx, file in enumerate(extra.files) %}\
 {%       if 'FILE_VIEW' in perm(repos.resource.child('source', file, version=change.rev)) %}\
 	* $file (${dict(edit='modified', add='added', delete='deleted',
diff --git a/trac/versioncontrol/web_ui/browser.py b/trac/versioncontrol/web_ui/browser.py
--- a/trac/versioncontrol/web_ui/browser.py
+++ b/trac/versioncontrol/web_ui/browser.py
@@ -356,6 +356,7 @@
         # Find node for the requested path/rev
         context = Context.from_request(req)
         node = None
+        display_rev = lambda rev: rev
         if repos:
             try:
                 if rev:
@@ -370,6 +371,8 @@
 
             context = context(repos.resource.child('source', path,
                                                    version=rev_or_latest))
+            display_rev = repos.display_rev
+
         # Prepare template data
         path_links = get_path_links(req.href, reponame, path, rev,
                                     order, desc)
@@ -394,6 +397,7 @@
             'context': context, 'reponame': reponame, 'repos': repos,
             'repoinfo': repoinfo,
             'path': path, 'rev': node and node.rev, 'stickyrev': rev,
+            'display_rev': display_rev,
             'created_path': node and node.created_path,
             'created_rev': node and node.created_rev,
             'properties': properties_data,
@@ -421,7 +425,7 @@
                     href = req.href.browser(reponame,
                                             node.created_path, rev=prev_rev)
                     add_link(req, 'prev', href,
-                             _('Revision %(num)s', num=prev_rev))
+                             _('Revision %(num)s', num=display_rev(prev_rev)))
                 if rev is not None:
                     add_link(req, 'up', req.href.browser(reponame,
                                                          node.created_path))
@@ -431,7 +435,7 @@
                     href = req.href.browser(reponame, node.created_path,
                                             rev=next_rev)
                     add_link(req, 'next', href,
-                             _('Revision %(num)s', num=next_rev))
+                             _('Revision %(num)s', num=display_rev(next_rev)))
                 prevnext_nav(req, _('Previous Revision'), _('Next Revision'),
                              _('Latest Revision'))
             else:
diff --git a/trac/versioncontrol/web_ui/changeset.py b/trac/versioncontrol/web_ui/changeset.py
--- a/trac/versioncontrol/web_ui/changeset.py
+++ b/trac/versioncontrol/web_ui/changeset.py
@@ -331,17 +331,17 @@
             rpath = new_path.replace('/','_')
             if chgset:
                 if restricted:
-                    filename = 'changeset_%s_r%s' % (rpath, new)
+                    filename = 'changeset_%s_%s' % (rpath, new)
                 else:
-                    filename = 'changeset_r%s' % new
+                    filename = 'changeset_%s' % new
             else:
                 if restricted:
-                    filename = 'diff-%s-from-r%s-to-r%s' \
+                    filename = 'diff-%s-from-%s-to-%s' \
                                   % (rpath, old, new)
                 elif old_path == '/': # special case for download (#238)
-                    filename = '%s-r%s' % (rpath, old)
+                    filename = '%s-%s' % (rpath, old)
                 else:
-                    filename = 'diff-from-%s-r%s-to-%s-r%s' \
+                    filename = 'diff-from-%s-%s-to-%s-%s' \
                                % (old_path.replace('/','_'), old, rpath, new)
             if format == 'diff':
                 self._render_diff(req, filename, repos, data)
@@ -381,6 +381,8 @@
     def _render_html(self, req, repos, chgset, restricted, xhr, data):
         """HTML version"""
         data['restricted'] = restricted
+        display_rev = repos.display_rev
+        data['display_rev'] = display_rev
         browser = BrowserModule(self.env)
         reponame = repos.reponame or None
 
@@ -406,6 +408,7 @@
                     yield old_node, new_node, kind, change
 
             def _changeset_title(rev):
+                rev = display_rev(rev)
                 if restricted:
                     return _('Changeset %(id)s for %(path)s', id=rev,
                              path=path)
@@ -436,7 +439,7 @@
                 else:
                     add_link(req, 'first', 
                              req.href.changeset(oldest_rev, reponame),
-                             _('Changeset %(id)s', id=oldest_rev))
+                             _('Changeset %(id)s', id=display_rev(oldest_rev)))
                     prev_path = data['old_path']
                     prev_rev = repos.previous_rev(chgset.rev)
                     if prev_rev:
@@ -457,7 +460,8 @@
                 else:
                     add_link(req, 'last', 
                              req.href.changeset(youngest_rev, reponame),
-                             _('Changeset %(id)s', id=youngest_rev))
+                             _('Changeset %(id)s',
+                               id=display_rev(youngest_rev)))
                     next_rev = repos.next_rev(chgset.rev)
                     if next_rev:
                         next_href = req.href.changeset(next_rev, reponame)
@@ -484,7 +488,7 @@
                 reponame, node.created_path, rev=node.created_rev,
                 annotate=annotated and 'blame' or None)
             title = _('Show revision %(rev)s of this file in browser',
-                      rev=node.rev)
+                      rev=display_rev(node.rev))
             return {'path': node.path, 'rev': node.rev,
                     'shortrev': repos.short_rev(node.rev),
                     'href': href, 'title': title}
@@ -630,7 +634,7 @@
                         href = req.href.changeset(new_node.rev, reponame,
                                                   new_node.path)
                         title = _('Show the changeset %(id)s restricted to '
-                                  '%(path)s', id=new_node.rev,
+                                  '%(path)s', id=display_rev(new_node.rev),
                                   path=new_node.path)
                     else:
                         href = req.href.changeset(
@@ -640,8 +644,9 @@
                             old_path=pathjoin(repos.reponame, 
                                               old_node.created_path))
                         title = _('Show the %(range)s differences restricted '
-                                  'to %(path)s', range='r%s:%s' % (
-                                      old_node.rev, new_node.rev),
+                                  'to %(path)s', range='[%s:%s]' % (
+                                      display_rev(old_node.rev),
+                                      display_rev(new_node.rev)),
                                   path=new_node.path)
                     info['href'] = href
                     info['title'] = old_node and title
@@ -782,7 +787,7 @@
     def title_for_diff(self, data):
         if data['new_path'] == data['old_path']:
             # ''diff between 2 revisions'' mode
-            return 'Diff r%s:%s for %s' \
+            return 'Diff [%s:%s] for %s' \
                    % (data['old_rev'] or 'latest', data['new_rev'] or 'latest',
                       data['new_path'] or '/')
         else:
@@ -999,10 +1004,12 @@
                              single and 1 or 2, repo=', '.join(repos_for_uid))
         else:
             title = ngettext('Changeset ', 'Changesets ', single and 1 or 2)
+        drev_a = older_cset.repos.display_rev(rev_a)
         if single:
-            title = tag(title, tag.em('[%s]' % rev_a))
+            title = tag(title, tag.em('[%s]' % drev_a))
         else:
-            title = tag(title, tag.em('[%s-%s]' % (rev_a, rev_b)))
+            drev_b = cset.repos.display_rev(rev_b)
+            title = tag(title, tag.em('[%s-%s]' % (drev_a, drev_b)))
         if field == 'title':
             return title
         elif field == 'summary':
diff --git a/trac/versioncontrol/web_ui/log.py b/trac/versioncontrol/web_ui/log.py
--- a/trac/versioncontrol/web_ui/log.py
+++ b/trac/versioncontrol/web_ui/log.py
@@ -104,7 +104,8 @@
                 rev = revranges.b
             except ValueError:
                 pass
-        rev = unicode(repos.normalize_rev(rev))    
+        rev = unicode(repos.normalize_rev(rev))
+        display_rev = repos.display_rev
 
         # The `history()` method depends on the mode:
         #  * for ''stop on copy'' and ''follow copies'', it's `Node.history()`
@@ -195,7 +196,7 @@
                 # FIXME: we should send a 404 error here
                 raise TracError(_("The file or directory '%(path)s' doesn't "
                     "exist at revision %(rev)s or at any previous revision.", 
-                    path=path, rev=rev), _('Nonexistent path'))
+                    path=path, rev=display_rev(rev)), _('Nonexistent path'))
 
         def make_log_href(path, **args):
             link_rev = rev
@@ -223,7 +224,7 @@
                                                      revs=next_revranges)
                 add_link(req, 'next', older_revisions_href,
                     _('Revision Log (restarting at %(path)s, rev. %(rev)s)',
-                    path=next_path, rev=next_rev))
+                    path=next_path, rev=display_rev(next_rev)))
             # only show fully 'limit' results, use `change == None` as a marker
             info[-1]['change'] = None
         
@@ -258,8 +259,8 @@
             'context': Context.from_request(req, 'source', path,
                                             parent=repos.resource),
             'reponame': repos.reponame or None, 'repos': repos,
-            'path': path, 'rev': rev, 'stop_rev': stop_rev, 
-            'revranges': revranges,
+            'path': path, 'rev': rev, 'stop_rev': stop_rev,
+            'display_rev': display_rev, 'revranges': revranges,
             'mode': mode, 'verbose': verbose, 'limit' : limit,
             'items': info, 'changes': changes,
             'email_map': email_map, 'extra_changes': extra_changes,
diff --git a/trac/versioncontrol/web_ui/tests/wikisyntax.py b/trac/versioncontrol/web_ui/tests/wikisyntax.py
--- a/trac/versioncontrol/web_ui/tests/wikisyntax.py
+++ b/trac/versioncontrol/web_ui/tests/wikisyntax.py
@@ -231,8 +231,8 @@
 <p>
 <a class="changeset" href="/changeset?new_path=branch&amp;old_path=trunk" title="Diff from trunk@latest to branch@latest">diff:trunk//branch</a>
 <a class="changeset" href="/changeset?new=23&amp;new_path=branch&amp;old=12&amp;old_path=trunk" title="Diff from trunk@12 to branch@23">diff:trunk@12//branch@23</a>
-<a class="changeset" href="/changeset?new=23&amp;new_path=trunk&amp;old=12&amp;old_path=trunk" title="Diff r12:23 for trunk">diff:trunk@12:23</a>
-<a class="changeset" href="/changeset?new=23&amp;old=12" title="Diff r12:23 for /">diff:@12:23</a>
+<a class="changeset" href="/changeset?new=23&amp;new_path=trunk&amp;old=12&amp;old_path=trunk" title="Diff [12:23] for trunk">diff:trunk@12:23</a>
+<a class="changeset" href="/changeset?new=23&amp;old=12" title="Diff [12:23] for /">diff:@12:23</a>
 </p>
 ------------------------------
 ============================== diff: link resolver + query
@@ -246,7 +246,7 @@
 diff://
 ------------------------------
 <p>
-<a class="changeset" title="Diff rlatest:latest for /">diff://</a>
+<a class="changeset" title="Diff [latest:latest] for /">diff://</a>
 </p>
 ------------------------------
 """

