Add follow support to LogServlet

Currently just adds a TreeFilter to the walk; there is not yet any
indication in the HTML view that a rename occurred.

Change-Id: Idacd5713155df6f616f1a72e09bce14e0463a80e
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java
index 893e259..56f1c29 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java
@@ -68,6 +68,31 @@
     assertThat(jc1.treeDiff.get(0).newPath).isEqualTo("foo");
   }
 
+  @Test
+  public void follow() throws Exception {
+    String contents = "contents";
+    RevCommit c1 = repo.branch("master")
+        .commit()
+        .add("foo", contents)
+        .create();
+    RevCommit c2 = repo.branch("master")
+        .commit()
+        .rm("foo")
+        .add("bar", contents)
+        .create();
+    repo.getRevWalk().parseBody(c1);
+    repo.getRevWalk().parseBody(c2);
+
+    Log response = buildJson(LOG, "/repo/+log/master/bar");
+    assertThat(response.log).hasSize(1);
+    verifyJsonCommit(response.log.get(0), c2);
+
+    response = buildJson(LOG, "/repo/+log/master/bar", "follow=1");
+    assertThat(response.log).hasSize(2);
+    verifyJsonCommit(response.log.get(0), c2);
+    verifyJsonCommit(response.log.get(1), c1);
+  }
+
   private void verifyJsonCommit(Commit jsonCommit, RevCommit commit) throws Exception {
     repo.getRevWalk().parseBody(commit);
     GitilesAccess access = new TestGitilesAccess(repo.getRepository()).forRequest(null);