diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
index e3794de..49d8405 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
@@ -40,7 +40,7 @@
     assertEquals("host", view.getHostName());
     assertNull(view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/?format=HTML", view.toUrl());
@@ -54,7 +54,7 @@
     assertEquals("host", HOST.getHostName());
     assertNull(HOST.getRepositoryName());
     assertEquals(Revision.NULL, HOST.getRevision());
-    assertNull(HOST.getTreePath());
+    assertNull(HOST.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/?format=HTML", HOST.toUrl());
@@ -73,7 +73,7 @@
     assertEquals("host", view.getHostName());
     assertNull(view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertEquals(
         ImmutableListMultimap.of(
             "foo", "foovalue",
@@ -106,7 +106,7 @@
     assertEquals("host", view.getHostName());
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/", view.toUrl());
@@ -128,7 +128,7 @@
     assertEquals("host", view.getHostName());
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+refs", view.toUrl());
@@ -153,7 +153,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master", view.toUrl());
@@ -171,7 +171,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/")
+        .setPathPart("/")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -180,7 +180,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master/", view.toUrl());
@@ -199,7 +199,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/file")
+        .setPathPart("/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -208,7 +208,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertEquals("file", view.getTreePath());
+    assertEquals("file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master/file", view.toUrl());
@@ -228,7 +228,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -237,7 +237,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master/path/to/a/file", view.toUrl());
@@ -262,7 +262,7 @@
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
         .setOldRevision(Revision.unpeeled("master^", parent))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -272,7 +272,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals("master^", view.getOldRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master%5E%21/path/to/a/file", view.toUrl());
@@ -295,7 +295,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -305,7 +305,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master%5E%21/path/to/a/file", view.toUrl());
@@ -330,7 +330,7 @@
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
         .setOldRevision(Revision.unpeeled("efab5678", other))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -340,7 +340,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals("efab5678", view.getOldRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/efab5678..master/path/to/a/file", view.toUrl());
@@ -372,7 +372,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/master", view.toUrl());
@@ -399,7 +399,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("abcd1234", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/abcd1234", view.toUrl());
@@ -417,7 +417,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -427,7 +427,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/master/path/to/a/file", view.toUrl());
@@ -451,7 +451,7 @@
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
         .setOldRevision(Revision.unpeeled("master^", parent))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -461,7 +461,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals("master^", view.getOldRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/master%5E..master/path/to/a/file", view.toUrl());
@@ -509,7 +509,7 @@
         .setRepositoryName("foo?bar")
         .setRevision(Revision.unpeeled("ba/d#name", id))
         .setOldRevision(Revision.unpeeled("other\"na/me", parent))
-        .setTreePath("we ird/pa'th/name")
+        .setPathPart("we ird/pa'th/name")
         .putParam("k e y", "val/ue")
         .setAnchor("anc#hor")
         .build();
@@ -523,7 +523,7 @@
     assertEquals("ba/d#name", view.getRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
     assertEquals("other\"na/me", view.getOldRevision().getName());
-    assertEquals("we ird/pa'th/name", view.getTreePath());
+    assertEquals("we ird/pa'th/name", view.getPathPart());
     assertEquals(ImmutableListMultimap.<String, String> of("k e y", "val/ue"),
         view.getParameters());
 
@@ -549,7 +549,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b/foo/bar/+/master/path/to/a/file", view.toUrl());
@@ -583,7 +583,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("")
+        .setPathPart("")
         .build();
 
     assertEquals("/b/foo/bar/+/master/", view.toUrl());
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
index 85423d9..a0fa78a 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
@@ -45,7 +45,7 @@
         .setHostName("host")
         .setRepositoryName("repo")
         .setRevision(Revision.unpeeled("m", id))
-        .setTreePath("a/b/c")
+        .setPathPart("a/b/c")
         .build();
     assertNull(resolveTargetUrl(view, "/foo"));
     assertEquals("/x/repo/+/m/a", resolveTargetUrl(view, "../../"));
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
index 712ddf5..fdb291c 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
@@ -84,7 +84,7 @@
     assertNull(view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testRepositoryIndex() throws Exception {
@@ -93,7 +93,7 @@
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testRefs() throws Exception {
@@ -104,35 +104,35 @@
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+refs/");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+refs/heads");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("heads", view.getTreePath());
+    assertEquals("heads", view.getPathPart());
 
     view = getView("/repo/+refs/heads/");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("heads", view.getTreePath());
+    assertEquals("heads", view.getPathPart());
 
     view = getView("/repo/+refs/heads/master");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("heads/master", view.getTreePath());
+    assertEquals("heads/master", view.getPathPart());
   }
 
   public void testBranches() throws Exception {
@@ -144,25 +144,25 @@
     assertEquals(Type.REVISION, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/heads/master");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("heads/master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/refs/heads/master");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("refs/heads/master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/stable");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("stable", view.getRevision().getName());
     assertEquals(stable, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testAmbiguousBranchAndTag() throws Exception {
@@ -174,31 +174,31 @@
     assertEquals(Type.REVISION, view.getType());
     assertEquals("name", view.getRevision().getName());
     assertEquals(tag, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/heads/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("heads/name", view.getRevision().getName());
     assertEquals(branch, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/refs/heads/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("refs/heads/name", view.getRevision().getName());
     assertEquals(branch, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/tags/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("tags/name", view.getRevision().getName());
     assertEquals(tag, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/refs/tags/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("refs/tags/name", view.getRevision().getName());
     assertEquals(tag, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testPath() throws Exception {
@@ -208,22 +208,22 @@
     view = getView("/repo/+show/master/");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+show/master/foo");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+show/master/foo/");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+show/master/foo/bar");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("foo/bar", view.getTreePath());
+    assertEquals("foo/bar", view.getPathPart());
   }
 
   public void testMultipleSlashes() throws Exception {
@@ -248,7 +248,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+diff/master^..master/");
     assertEquals(Type.DIFF, view.getType());
@@ -256,7 +256,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+diff/master^..master/foo");
     assertEquals(Type.DIFF, view.getType());
@@ -264,7 +264,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+diff/refs/heads/master^..refs/heads/master");
     assertEquals(Type.DIFF, view.getType());
@@ -272,7 +272,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("refs/heads/master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
   }
 
   public void testDiffAgainstEmptyCommit() throws Exception {
@@ -282,7 +282,7 @@
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
   }
 
   public void testLog() throws Exception {
@@ -293,33 +293,33 @@
     view = getView("/repo/+log");
     assertEquals(Type.LOG, view.getType());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+log/");
     assertEquals(Type.LOG, view.getType());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+log/master");
     assertEquals(Type.LOG, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master/");
     assertEquals(Type.LOG, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master/foo");
     assertEquals(Type.LOG, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+log/master^..master");
     assertEquals(Type.LOG, view.getType());
@@ -327,7 +327,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master^..master/");
     assertEquals(Type.LOG, view.getType());
@@ -335,7 +335,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master^..master/foo");
     assertEquals(Type.LOG, view.getType());
@@ -343,7 +343,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+log/refs/heads/master^..refs/heads/master");
     assertEquals(Type.LOG, view.getType());
@@ -351,7 +351,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("refs/heads/master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
   }
 
   private GitilesView getView(String pathAndQuery) throws ServletException, IOException {
