diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
index 76d9f96..972f913 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -195,11 +195,8 @@
 
       Map<String, Object> allData = getData(req);
 
-      String headerVariant = getAccess(req).getConfig().getString("template", null, "customHeader");
-      if (headerVariant != null) {
-        allData.put("headerVariant", headerVariant);
-      }
-
+      GitilesConfig.putVariant(
+          getAccess(req).getConfig(), "customHeader", "headerVariant", allData);
       allData.putAll(soyData);
       GitilesView view = ViewFilter.getView(req);
       if (!allData.containsKey("repositoryName") && view.getRepositoryName() != null) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
index b7d9a10..a196c07 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
@@ -21,6 +21,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Map;
 
 import javax.servlet.FilterConfig;
 
@@ -52,5 +53,13 @@
     return config;
   }
 
+  public static void putVariant(Config config, String templateName, String keyName,
+      Map<String, ? super String> out) {
+    String variant = config.getString("template", null, templateName);
+    if (variant != null) {
+      out.put(keyName, variant);
+    }
+  }
+
   private GitilesConfig() {}
 }
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 ba979bc..e547563 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -108,6 +108,7 @@
       }
 
       data.put("title", title);
+      GitilesConfig.putVariant(getAccess(req).getConfig(), "logEntry", "logEntryVariant", data);
 
       renderHtml(req, res, "gitiles.logDetail", data);
     } catch (RevWalkException e) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
index d266a1c..1c134cf 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
@@ -34,7 +34,7 @@
 
 public class LogSoyData {
   private static final ImmutableSet<Field> FIELDS = Sets.immutableEnumSet(Field.ABBREV_SHA,
-      Field.URL, Field.SHORT_MESSAGE, Field.AUTHOR, Field.BRANCHES, Field.TAGS);
+      Field.URL, Field.SHORT_MESSAGE, Field.AUTHOR, Field.COMMITTER, Field.BRANCHES, Field.TAGS);
 
   private final HttpServletRequest req;
   private final GitilesView view;
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 09d9918..ec375ba 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -78,10 +78,10 @@
           data = new LogSoyData(req, view).toSoyData(walk, LOG_LIMIT, "HEAD", null, df);
         } else {
           // TODO(dborowitz): Handle non-commit or missing HEAD?
-          data = Maps.newHashMapWithExpectedSize(6);
+          data = Maps.newHashMapWithExpectedSize(7);
         }
       } else {
-        data = Maps.newHashMapWithExpectedSize(6);
+        data = Maps.newHashMapWithExpectedSize(7);
       }
     } finally {
       walk.release();
@@ -102,6 +102,7 @@
     if (tags.size() > REF_LIMIT) {
       data.put("moreTagsUrl", GitilesView.refs().copyFrom(view).toUrl());
     }
+    GitilesConfig.putVariant(getAccess(req).getConfig(), "logEntry", "logEntryVariant", data);
     return data;
   }
 
diff --git a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/LogDetail.soy b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/LogDetail.soy
index 3d5531e..eeccb94 100644
--- a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/LogDetail.soy
+++ b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/LogDetail.soy
@@ -23,6 +23,7 @@
  * @param breadcrumbs breadcrumbs for this page.
  * @param? tags optional list of tags encountered when peeling this object, with
  *     keys corresponding to gitiles.tagDetail.
+ * @param? logEntryVariant variant name for log entry template.
  * @param entries list of log entries; see .logEntry.
  * @param? nextUrl URL for the next page of results.
  * @param? previousUrl URL for the previous page of results.
@@ -44,6 +45,7 @@
 /**
  * List of log entries.
  *
+ * @param? logEntryVariant variant name for log entry template.
  * @param entries list of log entries; see .logEntry.
  * @param? nextUrl URL for the next page of results.
  * @param? previousUrl URL for the previous page of results.
@@ -59,7 +61,8 @@
   <ol class="shortlog">
     {foreach $entry in $entries}
       <li{if $previousUrl and isFirst($entry)} class="first"{/if}>
-        {call .logEntry data="$entry" /}
+        {delcall gitiles.logEntry variant="$logEntryVariant ?: 'default'"
+            data="$entry" /}
       </li>
     {/foreach}
   </ol>
@@ -85,7 +88,7 @@
  * @param branches list of branches for this entry, with "name" and "url" keys.
  * @param tags list of tags for this entry, with "name" and "url" keys.
  */
-{template .logEntry}
+{deltemplate gitiles.logEntry variant="'default'"}
 <a href="{$url}">
   <span class="sha1">{$abbrevSha}</span>
   // nbsp instad of CSS padding/margin because those cause a break in the
@@ -105,4 +108,4 @@
     {sp}<a href="{$tag.url}" class="tag-label">{$tag.name}</a>
   {/foreach}
 {/if}
-{/template}
+{/deltemplate}
diff --git a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/RepositoryIndex.soy b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/RepositoryIndex.soy
index 14d5335..cdd5005 100644
--- a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/RepositoryIndex.soy
+++ b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/RepositoryIndex.soy
@@ -29,6 +29,7 @@
  * @param? moreTagsUrl URL to show more branches, if necessary.
  * @param? nextUrl URL for the next page of log results.
  * @param? previousUrl URL for the previous page of log results.
+ * @param? logEntryVariant variant name for log entry template.
  * @param entries list of log entries; see .logEntry.
  */
 {template .repositoryIndex}
