diff --git a/java/com/google/gitiles/CommitData.java b/java/com/google/gitiles/CommitData.java
index ef2ff95..705240e 100644
--- a/java/com/google/gitiles/CommitData.java
+++ b/java/com/google/gitiles/CommitData.java
@@ -100,9 +100,11 @@
       CommitData result = new CommitData();
 
       if (fs.contains(Field.AUTHOR)) {
+        walk.parseBody(c);
         result.author = c.getAuthorIdent();
       }
       if (fs.contains(Field.COMMITTER)) {
+        walk.parseBody(c);
         result.committer = c.getCommitterIdent();
       }
       if (fs.contains(Field.SHA)) {
@@ -144,9 +146,11 @@
         result.tags = getRefsById(repo, c, Constants.R_TAGS);
       }
       if (fs.contains(Field.MESSAGE)) {
+        walk.parseBody(c);
         result.message = c.getFullMessage();
       }
       if (fs.contains(Field.SHORT_MESSAGE)) {
+        walk.parseBody(c);
         String msg = c.getShortMessage();
         if (msg.length() > 80) {
           String ft = result.message;
diff --git a/java/com/google/gitiles/IdentRevFilter.java b/java/com/google/gitiles/IdentRevFilter.java
index 745debd..ef3ddf8 100644
--- a/java/com/google/gitiles/IdentRevFilter.java
+++ b/java/com/google/gitiles/IdentRevFilter.java
@@ -43,7 +43,7 @@
   @Override
   public boolean include(RevWalk walker, RevCommit commit)
       throws StopWalkException, MissingObjectException, IncorrectObjectTypeException, IOException {
-    return matchesPerson(getIdent(commit));
+    return matchesPerson(getIdent(walker, commit));
   }
 
   @Override
@@ -60,7 +60,8 @@
     return person.getName().contains(pattern) || person.getEmailAddress().contains(pattern);
   }
 
-  protected abstract PersonIdent getIdent(RevCommit commit);
+  protected abstract PersonIdent getIdent(RevWalk walk, RevCommit commit)
+      throws MissingObjectException, IOException;
 
   private static class Author extends IdentRevFilter {
     private Author(String author) {
@@ -68,7 +69,9 @@
     }
 
     @Override
-    protected PersonIdent getIdent(RevCommit commit) {
+    protected PersonIdent getIdent(RevWalk walk, RevCommit commit)
+        throws MissingObjectException, IOException {
+      walk.parseBody(commit);
       return commit.getAuthorIdent();
     }
   }
@@ -79,7 +82,9 @@
     }
 
     @Override
-    protected PersonIdent getIdent(RevCommit commit) {
+    protected PersonIdent getIdent(RevWalk walk, RevCommit commit)
+        throws MissingObjectException, IOException {
+      walk.parseBody(commit);
       return commit.getCommitterIdent();
     }
   }
