diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
index e6064c2..e6dd9f7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
@@ -91,7 +91,11 @@
     try {
       RevWalk rw = new RevWalk(repo);
       try {
-        RevCommit commit = rw.parseCommit(key.getRevId());
+        ObjectId revId = key.getRevId();
+        if (revId == null) {
+          return Resource.NOT_FOUND;
+        }
+        RevCommit commit = rw.parseCommit(revId);
         RevTree tree = commit.getTree();
         TreeWalk tw = new TreeWalk(repo);
         try {
@@ -110,11 +114,11 @@
           }
           ObjectReader reader = repo.newObjectReader();
           try {
-            String abbrRevId = reader.abbreviate(key.getRevId()).name();
+            String abbrRevId = reader.abbreviate(revId).name();
             String html =
                 formatter.get().format(key.getProject().get(),
                     abbrRevId, formatterCfg,
-                    replaceMacros(repo, key.getProject(), key.getRevId(),
+                    replaceMacros(repo, key.getProject(), revId,
                         abbrRevId, bytes));
             return getAsHtmlResource(html, commit.getCommitTime());
           } finally {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java
index feb2bdd..1f23af0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java
@@ -104,6 +104,10 @@
       metaConfigRevision = s[4];
     }
     return new XDocResourceKey(formatter, new Project.NameKey(project), file,
-        ObjectId.fromString(revision), ObjectId.fromString(metaConfigRevision));
+        toObjectId(revision), toObjectId(metaConfigRevision));
+  }
+
+  private static ObjectId toObjectId(String id) {
+    return id != null ? ObjectId.fromString(id) : null;
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java
index 349b81a..6447ea9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java
@@ -124,7 +124,11 @@
       try {
         RevWalk rw = new RevWalk(repo);
         try {
-          RevCommit commit = rw.parseCommit(repo.resolve(RefNames.REFS_CONFIG));
+          ObjectId id = repo.resolve(RefNames.REFS_CONFIG);
+          if (id == null) {
+            return null;
+          }
+          RevCommit commit = rw.parseCommit(id);
           RevTree tree = commit.getTree();
           TreeWalk tw = new TreeWalk(repo);
           try {
