diff --git a/trac/htdocs/css/browser.css b/trac/htdocs/css/browser.css
--- a/trac/htdocs/css/browser.css
+++ b/trac/htdocs/css/browser.css
@@ -174,7 +174,7 @@
  margin: 0 0 .4em 1.6em;
  padding: 0;
 }
-#info .props li { padding: 0; overflow: auto; }
+#info .props > li { padding: 2px 0; overflow: auto; }
 
 /* Styles for the HTML preview */
 #preview { background: #fff; clear: both; margin: 0 }
diff --git a/trac/versioncontrol/svn_fs.py b/trac/versioncontrol/svn_fs.py
--- a/trac/versioncontrol/svn_fs.py
+++ b/trac/versioncontrol/svn_fs.py
@@ -323,7 +323,7 @@
         if name == 'svn:externals':
             return self._render_externals(props[name])
         elif name == 'svn:mergeinfo' or name.startswith('svnmerge-'):
-            return self._render_mergeinfo(props[name])
+            return self._render_mergeinfo(name, mode, context, props)
         elif name == 'svn:needs-lock':
             return self._render_needslock(context)
 
@@ -389,12 +389,31 @@
         return tag.ul([tag.li(tag.a(label, href=href, title=title))
                        for label, href, title in externals_data])
 
-    def _render_mergeinfo(self, prop):
-        prop = prop.rsplit(':', 1)
-        if len(prop) == 2:
-            prop[1] = prop[1].replace(',', u',\u200b')
-        return ':'.join(prop)
-
+    def _render_mergeinfo(self, name, mode, context, props):
+        """Parse svn:mergeinfo and svnmerge-* properties converting branch
+        names and revisions to links."""
+        ul = []
+        for line in props[name].splitlines():
+            try:
+                path, revs = line.split(':', 1)
+                if 'LOG_VIEW' in context.perm('source', path):
+                    browser_href = context.href.browser(path,
+                                                rev=context.resource.version)
+                    log_href = context.href.log(path, revs=revs)
+                    ul.append(tag.li(tag.a(path, title=_('View dir'),
+                                           href=browser_href), ': ',
+                                     tag.a(_('show revisions'),
+                                           title=revs.replace(',', u', '),
+                                           href=log_href)))
+                else:
+                    revs = revs.replace(',', u',\u200b')
+                    ul.append(tag.li(':'.join([path, revs])))
+            except Exception, e:
+                self.log.warning('Rendering of property %s failed: %s', name,
+                                 exception_to_unicode(e))
+                ul.append(tag.li(line))
+        return tag.ul(ul)      
+     
     def _render_needslock(self, context):
         return tag.img(src=context.href.chrome('common/lock-locked.png'),
                        alt="needs lock", title="needs lock")

