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 f0352ac..f457088 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -186,7 +186,8 @@
       }
     }
 
-    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)
@@ -233,7 +234,8 @@
           oldTree = new EmptyTreeIterator();
           break;
         case 1:
-          result.oldRevision = Revision.peeled(result.revision.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/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
index 32359db..13185fa 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -107,7 +107,8 @@
 
       if (paginator != null) {
         DateFormatter df = new DateFormatter(access, Format.DEFAULT);
-        try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data)) {
+        try (OutputStream out =
+            startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data)) {
           Writer w = newWriter(out, res);
           new LogSoyData(req, access, "oneline")
               .renderStreaming(paginator, "HEAD", renderer, w, df);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
index ab89b1f..9f234d1 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
@@ -187,7 +187,8 @@
             // foo..bar (foo may be empty)
             pathStart = oldRevision.getName().length() + 2 + name.length();
           }
-          Result result = new Result(Revision.peel(name, obj, walk), oldRevision, path.substring(pathStart));
+          Result result =
+              new Result(Revision.peel(name, obj, walk), oldRevision, path.substring(pathStart));
           return isVisible(walk, result) ? result : null;
         }
         first = false;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java
index ed65fef..4fa1693 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java
@@ -83,7 +83,8 @@
     // PersonIdent.toString() uses its own format with "d" instead of "dd",
     // hence the mismatches in 2 vs. 02 above. Nonetheless I think this sanity
     // check is useful enough to keep around.
-    assertThat(ident.toString()).isEqualTo("PersonIdent[A User, user@example.com, " + whenStr + "]");
+    assertThat(ident.toString())
+        .isEqualTo("PersonIdent[A User, user@example.com, " + whenStr + "]");
     return ident;
   }
 }
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 87350f8..4bdbc08 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
@@ -71,7 +71,8 @@
     assertThat(getView("/repo/+/" + hex + "/index.md").getType()).isEqualTo(Type.DOC);
     assertThat(getView("/repo/+/master^..master").getType()).isEqualTo(Type.DIFF);
     assertThat(getView("/repo/+/master^..master/").getType()).isEqualTo(Type.DIFF);
-    assertThat(getView("/repo/+/" + parent.name() + ".." + hex + "/").getType()).isEqualTo(Type.DIFF);
+    assertThat(getView("/repo/+/" + parent.name() + ".." + hex + "/").getType())
+        .isEqualTo(Type.DIFF);
   }
 
   @Test
