diff --git a/reviewboard/reviews/templatetags/reviewtags.py b/reviewboard/reviews/templatetags/reviewtags.py
index f6941dbd608187543729baae345b5e611c5e5fba..6c2a035b1b1378cbf2fd53e01e274bad0a1b6525 100644
--- a/reviewboard/reviews/templatetags/reviewtags.py
+++ b/reviewboard/reviews/templatetags/reviewtags.py
@@ -622,12 +622,14 @@ def comment_issue(context, review_request, comment, comment_type):
         'interactive': interactive,
     }
 
+
 @register.filter
 @stringfilter
 def pretty_print_issue_status(status):
     """Turns an issue status code into a human-readable status string."""
     return BaseComment.issue_status_to_string(status)
 
+
 @register.filter
 @stringfilter
 def char_limit(description):
@@ -635,6 +637,6 @@ def char_limit(description):
     limit = 120
 
     if len(description) > limit:
-        description = description[0:limit-3] + "..."
+        description = description[0:limit - 3] + "..."
 
     return description
diff --git a/reviewboard/reviews/urls.py b/reviewboard/reviews/urls.py
index 62e923023ec78c8faf0e7719d79d8685e8bfaff3..79778bfd0ca3b7f20fd3b7b9a1f6f329f0a84e59 100644
--- a/reviewboard/reviews/urls.py
+++ b/reviewboard/reviews/urls.py
@@ -35,8 +35,8 @@ urlpatterns = patterns('reviewboard.reviews.views',
      'comment_diff_fragments'),
 
     # Review request interdiffs
-    (r'^(?P<review_request_id>[0-9]+)/diff/(?P<revision>[0-9]+)-(?P<interdiff_revision>[0-9]+)/$',
-     'diff'),
+    url(r'^(?P<review_request_id>[0-9]+)/diff/(?P<revision>[0-9]+)-(?P<interdiff_revision>[0-9]+)/$',
+        'diff', name="view-interdiff"),
     (r'^(?P<review_request_id>[0-9]+)/diff/(?P<revision>[0-9]+)-(?P<interdiff_revision>[0-9]+)/fragment/(?P<filediff_id>[0-9]+)/$',
      'diff_fragment'),
     (r'^(?P<review_request_id>[0-9]+)/diff/(?P<revision>[0-9]+)-(?P<interdiff_revision>[0-9]+)/fragment/(?P<filediff_id>[0-9]+)/chunk/(?P<chunkindex>[0-9]+)/$',
diff --git a/reviewboard/reviews/views.py b/reviewboard/reviews/views.py
index 94dd9c00eb6bd16ce316714bdc8d3ba114c87b1b..3ceaf302a55ad2508a5f3e87115350b05d330745 100644
--- a/reviewboard/reviews/views.py
+++ b/reviewboard/reviews/views.py
@@ -72,9 +72,11 @@ def _render_permission_denied(
     return response
 
 
-def _find_review_request(request, review_request_id, local_site_name):
+def _find_review_request(request, review_request_id, local_site_name,
+    select_related=None):
     """
-    Find a review request based on an ID and optional LocalSite name.
+    Find a review request based on an ID, optional LocalSite name and optional
+    select related query.
 
     If a local site is passed in on the URL, we want to look up the review
     request using the local_id instead of the pk. This allows each LocalSite
@@ -82,16 +84,25 @@ def _find_review_request(request, review_request_id, local_site_name):
 
     Returns either (None, response) or (ReviewRequest, None).
     """
+    review_request = ReviewRequest.objects.all()
+
+    if select_related:
+        review_request = review_request.select_related(*select_related)
+
     if local_site_name:
         local_site = get_object_or_404(LocalSite, name=local_site_name)
         if not local_site.is_accessible_by(request.user):
             return None, _render_permission_denied(request)
 
-        review_request = get_object_or_404(ReviewRequest,
-                                           local_site=local_site,
-                                           local_id=review_request_id)
+        review_request = review_request.filter(local_site=local_site, \
+            local_id=review_request_id)
     else:
-        review_request = get_object_or_404(ReviewRequest, pk=review_request_id)
+        review_request = review_request.filter(pk=review_request_id)
+
+    try:
+        review_request = review_request.get()
+    except ReviewRequest.DoesNotExist:
+        raise Http404
 
     if review_request.is_accessible_by(request.user):
         return review_request, None
@@ -280,7 +291,8 @@ def review_detail(request,
     # local_site configured to have its own review request ID namespace
     # starting from 1.
     review_request, response = \
-        _find_review_request(request, review_request_id, local_site_name)
+        _find_review_request(request, review_request_id, local_site_name, \
+        "diffset_history__diffsets")
 
     if not review_request:
         return response
@@ -374,6 +386,7 @@ def review_detail(request,
 
         for name, info in changedesc.fields_changed.items():
             multiline = False
+            diff_revision = False
 
             if 'added' in info or 'removed' in info:
                 change_type = 'add_remove'
@@ -391,6 +404,11 @@ def review_detail(request,
                                 info[field][i] = (buginfo[0], full_bug_url)
                             except TypeError:
                                 logging.warning("Invalid bugtracker url format")
+                elif name == "diff" and "added" in info:
+                    # Sets the incremental revision number for a review
+                    # request change, provided it is an updated diff.
+                    diffs = review_request.diffset_history.diffsets
+                    diff_revision = diffs.get(pk=info['added'][0][2]).revision
 
             elif 'old' in info or 'new' in info:
                 change_type = 'changed'
@@ -425,6 +443,7 @@ def review_detail(request,
                 'multiline': multiline,
                 'info': info,
                 'type': change_type,
+                'diff_revision': diff_revision,
             })
 
         # Expand the latest review change
diff --git a/reviewboard/templates/reviews/review_detail.html b/reviewboard/templates/reviews/review_detail.html
index b609f70aafcbca2db4d86fecf3ae51a806d08184..aee93278e87fd17688a7b05e184c78590cf08f4d 100644
--- a/reviewboard/templates/reviews/review_detail.html
+++ b/reviewboard/templates/reviews/review_detail.html
@@ -289,16 +289,35 @@
 {%  ifequal fieldinfo.type "add_remove" %}
     <ul>
 {%   if fieldinfo.info.removed %}
-{% definevar "removed_values" %}
-{% for item in fieldinfo.info.removed %}{% if item.1 %}<a href="{{item.1}}">{{item.0}}</a>{% else %}{{item.0}}{% endif %}{% if not forloop.last %}, {% endif %}{% endfor %}
-{% enddefinevar %}
-<li>{% blocktrans %}removed {{removed_values}}{% endblocktrans %}</li>
+{%    definevar "removed_values" %}
+{%     for item in fieldinfo.info.removed %}
+{%      if item.1 %}
+     <a href="{{item.1}}">{{item.0}}</a>
+{%      else %}
+         {{item.0}}
+{%      endif %}
+{%      if not forloop.last %}, {% endif %}
+{%     endfor %}
+{%    enddefinevar %}
+     <li>{% blocktrans %}removed {{removed_values}}{% endblocktrans %}</li>
 {%   endif %}
 {%   if fieldinfo.info.added %}
-{% definevar "added_values" %}
-{% for item in fieldinfo.info.added %}{% if item.1 %}<a href="{{item.1}}">{{item.0}}</a>{% else %}{{item.0}}{% endif %}{% if not forloop.last %}, {% endif %}{% endfor %}
-{% enddefinevar %}
-<li>{% blocktrans %}added {{added_values}}{% endblocktrans %}</li>
+{%    definevar "added_values" %}
+{%     for item in fieldinfo.info.added %}
+{%      if item.1 %}
+     <a href="{{item.1}}">{{item.0}}</a>
+{%       if fieldinfo.diff_revision %}
+{%        with fieldinfo.diff_revision|add:"-1" as past_revision and fieldinfo.diff_revision as current_revision %}
+     - <a href="{% url view-interdiff review_request.display_id past_revision current_revision %}">{% trans "Show Changes" %}</a>
+{%        endwith %}
+{%       endif %}
+{%      else %}
+         {{item.0}}
+{%      endif %}
+{%      if not forloop.last %}, {% endif %}
+{%     endfor %}
+{%    enddefinevar %}
+     <li>{% blocktrans %}added {{added_values}}{% endblocktrans %}</li>
 {%   endif %}
     </ul>
 {%  endifequal %}
