Set path context on more URLs in commit detail

Change-Id: I1ba837676975aa6d1d8211d77cbd7ac2346f3bd6
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 0f614e6..3048aa8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -144,6 +144,7 @@
         result.tree = c.getTree().copy();
       }
       if (fs.contains(Field.TREE_URL)) {
+        // Tree always implies the root tree.
         result.treeUrl = GitilesView.path().copyFrom(view).setPathPart("/").toUrl();
       }
       if (fs.contains(Field.PARENTS)) {
@@ -175,12 +176,12 @@
       }
     }
 
-    private static String urlFromView(GitilesView view, RevCommit commit,
-        GitilesView.Builder builder) {
+    private static String urlFromView(GitilesView view, RevCommit commit, GitilesView.Builder builder) {
       Revision rev = view.getRevision();
       return builder.copyFrom(view)
+          .setOldRevision(Revision.NULL)
           .setRevision(rev.getId().equals(commit) ? rev.getName() : commit.name(), commit)
-          .setPathPart(null)
+          .setPathPart(view.getPathPart())
           .toUrl();
     }
 
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 bd03eb2..3e77d8d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
@@ -158,6 +158,8 @@
     // viewing a diff against one of the parents.
     for (RevCommit parent : parents) {
       String name = parent.name();
+      // Clear path on parent diff view, since this parent may not have a diff
+      // for the path in question.
       GitilesView.Builder diff = GitilesView.diff().copyFrom(view).setPathPart("");
       String parentName;
       if (parents.size() == 1) {