diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
index 76f5273..74d0422 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -80,6 +80,7 @@
   }
 
   static class DiffList {
+    Revision revision;
     Revision oldRevision;
     List<DiffEntry> entries;
   }
@@ -213,6 +214,10 @@
     private DiffList computeDiffEntries(Repository repo, GitilesView view, RevCommit commit)
         throws IOException {
       DiffList result = new DiffList();
+      result.revision = view.getRevision().matches(commit)
+          ? view.getRevision()
+          : Revision.peeled(commit.name(), commit);
+
       AbstractTreeIterator oldTree;
       switch (commit.getParentCount()) {
         case 0:
@@ -220,8 +225,7 @@
           oldTree = new EmptyTreeIterator();
           break;
         case 1:
-          result.oldRevision =
-              Revision.peeled(view.getRevision().getName() + "^", commit.getParent(0));
+          result.oldRevision = Revision.peeled(result.revision.getName() + "^", commit.getParent(0));
           oldTree = getTreeIterator(commit.getParent(0));
           break;
         default:
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
index bba35f7..733da0a 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
@@ -196,7 +196,10 @@
     if (dl.oldRevision == null) {
       return NullData.INSTANCE;
     }
-    GitilesView.Builder diffUrl = GitilesView.diff().copyFrom(view)
+    GitilesView.Builder diffUrl = GitilesView.diff()
+        .copyFrom(view)
+        .setOldRevision(dl.oldRevision)
+        .setRevision(dl.revision)
         .setPathPart("");
 
     List<Object> result = Lists.newArrayListWithCapacity(dl.entries.size());
@@ -207,6 +210,7 @@
         entry.put("path", e.getNewPath());
         entry.put("url", GitilesView.path()
             .copyFrom(view)
+            .setRevision(dl.revision)
             .setPathPart(e.getNewPath())
             .toUrl());
       } else {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java b/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java
index a93d4b5..54c72fa 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java
@@ -109,9 +109,12 @@
     return peeledType;
   }
 
+  public boolean matches(ObjectId other) {
+    return id.equals(other) || nameEqualsAbbreviated(other);
+  }
+
   public boolean nameIsId() {
-    return AbbreviatedObjectId.isId(name)
-        && (AbbreviatedObjectId.fromString(name).prefixCompare(id) == 0);
+    return nameEqualsAbbreviated(id);
   }
 
   @Override
@@ -143,4 +146,10 @@
         .add("peeledType", type > 0 ? Constants.typeString(peeledType) : null)
         .toString();
   }
+
+  private boolean nameEqualsAbbreviated(ObjectId other) {
+    return AbbreviatedObjectId.isId(name)
+        ? AbbreviatedObjectId.fromString(name).prefixCompare(other) == 0
+        : false;
+  }
 }
