LogServlet: Default to follow=1

Although not the default in `git log`, there is a significant
usability improvement to defaulting to follow, particularly because we
don't expose a link in the UI to turn this on.

There might still be performance concerns with this default, so allow
it to be configured in gitiles.config, using the same log.follow
option as in core Git.

Change-Id: I43fe926e0a22bf2f7e48cc5ab0194eb14d82fdd6
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
index bcc09eb..ae6219f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -256,11 +256,16 @@
     }
     walk.setRewriteParents(false);
     String path = view.getPathPart();
-    if (isTrue(Iterables.getFirst(view.getParameters().get(FOLLOW_PARAM), null))) {
+
+    List<String> followParams = view.getParameters().get(FOLLOW_PARAM);
+    boolean follow = !followParams.isEmpty()
+        ? isTrue(followParams.get(0))
+        : access.getConfig().getBoolean("log", null, "follow", true);
+    if (follow) {
       walk.setTreeFilter(FollowFilter.create(path, access.getConfig().get(DiffConfig.KEY)));
     } else {
       walk.setTreeFilter(AndTreeFilter.create(
-          PathFilterGroup.createFromStrings(view.getPathPart()),
+          PathFilterGroup.createFromStrings(path),
           TreeFilter.ANY_DIFF));
     }
   }
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 56f1c29..2eadf54 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/LogServletTest.java
@@ -83,11 +83,11 @@
     repo.getRevWalk().parseBody(c1);
     repo.getRevWalk().parseBody(c2);
 
-    Log response = buildJson(LOG, "/repo/+log/master/bar");
+    Log response = buildJson(LOG, "/repo/+log/master/bar", "follow=0");
     assertThat(response.log).hasSize(1);
     verifyJsonCommit(response.log.get(0), c2);
 
-    response = buildJson(LOG, "/repo/+log/master/bar", "follow=1");
+    response = buildJson(LOG, "/repo/+log/master/bar");
     assertThat(response.log).hasSize(2);
     verifyJsonCommit(response.log.get(0), c2);
     verifyJsonCommit(response.log.get(1), c1);