diff --git a/build.sbt b/build.sbt
index 211b55b..8cd77dc 100644
--- a/build.sbt
+++ b/build.sbt
@@ -11,7 +11,7 @@
     scalaVersion := "2.11.8",
 
     libraryDependencies ++= Seq(
-      "io.fabric8" % "gitective-core" % "0.9.19"
+      "io.fabric8" % "gitective-core" % "0.9.37"
         exclude("org.eclipse.jgit", "org.eclipse.jgit"),
       "com.google.inject" % "guice" % "3.0" % Provided,
       "com.google.gerrit" % "gerrit-plugin-api" % gerritApiVersion % Provided withSources(),
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogram.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogram.scala
index 5b5a70b..ba73fcb 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogram.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogram.scala
@@ -14,17 +14,25 @@
 
 package com.googlesource.gerrit.plugins.analytics.common
 
+import com.google.gerrit.extensions.restapi.PreconditionFailedException
 import com.google.inject.Singleton
 import org.eclipse.jgit.lib.Repository
 import org.gitective.core.CommitFinder
-import org.gitective.core.stat.CommitHistogramFilter
 
 @Singleton
 class UserActivityHistogram {
   def get(repo: Repository, filter: AbstractCommitHistogramFilter) = {
     val finder = new CommitFinder(repo)
-    finder.setFilter(filter).find
-    val histogram = filter.getHistogram
-    histogram.getAggregatedUserActivity
+
+    try {
+      finder.setFilter(filter).find
+      val histogram = filter.getHistogram
+      histogram.getAggregatedUserActivity
+    } catch {
+      // 'find' throws an IllegalArgumentException when the conditions to walk through the commits tree are not met,
+      // i.e: an empty repository doesn't have the starting commit.
+      case _: IllegalArgumentException => Array.empty[AggregatedUserCommitActivity]
+      case e: Exception => throw new PreconditionFailedException(s"Cannot find commits: ${e.getMessage}").initCause(e)
+    }
   }
 }
\ No newline at end of file
diff --git a/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogramTest.scala b/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogramTest.scala
new file mode 100644
index 0000000..282d29f
--- /dev/null
+++ b/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/UserActivityHistogramTest.scala
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+
+// http://www.apache.org/licenses/LICENSE-2.0
+
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.analytics.common
+
+import com.googlesource.gerrit.plugins.analytics.common.AggregationStrategy.EMAIL_YEAR
+import com.googlesource.gerrit.plugins.analytics.test.GitTestCase
+import org.eclipse.jgit.internal.storage.file.FileRepository
+import org.scalatest.{FlatSpec, Matchers}
+
+class UserActivityHistogramTest extends FlatSpec with Matchers with GitTestCase {
+
+  "UserActivityHistogram" should "return no activities" in {
+    val repo = new FileRepository(testRepo)
+    val filter = new AggregatedHistogramFilterByDates(aggregationStrategy = EMAIL_YEAR)
+    new UserActivityHistogram().get(repo, filter) should have size 0
+  }
+
+  it should "aggregate to one activity" in {
+    val repo = new FileRepository(testRepo)
+    add("test.txt", "content")
+    val filter = new AggregatedHistogramFilterByDates(aggregationStrategy = EMAIL_YEAR)
+    new UserActivityHistogram().get(repo, filter) should have size 1
+  }
+
+}
