diff --git a/kallithea/lib/vcs/backends/git/changeset.py b/kallithea/lib/vcs/backends/git/changeset.py
--- a/kallithea/lib/vcs/backends/git/changeset.py
+++ b/kallithea/lib/vcs/backends/git/changeset.py
@@ -552,3 +552,5 @@ class GitChangeset(BaseChangeset):
return []
return RemovedFileNodesGenerator([n for n in
self._get_paths_for_status('deleted')], self)
+
+ extra = {}
diff --git a/kallithea/lib/vcs/backends/hg/changeset.py b/kallithea/lib/vcs/backends/hg/changeset.py
--- a/kallithea/lib/vcs/backends/hg/changeset.py
+++ b/kallithea/lib/vcs/backends/hg/changeset.py
@@ -384,3 +384,7 @@ class MercurialChangeset(BaseChangeset):
Returns list of removed ``FileNode`` objects.
"""
return RemovedFileNodesGenerator([n for n in self.status[2]], self)
+
+ @LazyProperty
+ def extra(self):
+ return self._ctx.extra()
diff --git a/kallithea/templates/changeset/changeset.html b/kallithea/templates/changeset/changeset.html
--- a/kallithea/templates/changeset/changeset.html
+++ b/kallithea/templates/changeset/changeset.html
@@ -116,6 +116,18 @@ ${self.repo_context_bar('changelog', c.c
${h.person(c.changeset.author,'username_and_name')} - ${h.age(c.changeset.date,True)} ${h.fmt_date(c.changeset.date)}
${h.email_or_none(c.changeset.author)}
+ <% rev = c.changeset.extra.get('source') %>
+ %if rev:
+