diff --git a/rbtools/postreview.py b/rbtools/postreview.py
--- a/rbtools/postreview.py
+++ b/rbtools/postreview.py
@@ -2036,7 +2036,32 @@ class GitClient(SCMClient):
         return diff_data
 
     def diff_between_revisions(self, revision_range, args, repository_info):
-        pass
+        """Perform a diff between two arbitrary revisions"""
+        if ":" not in revision_range:
+            # only one revision is specified
+            if options.guess_summary and not options.summary:
+                options.summary = execute(["git", "log", "--pretty=format:%s",
+                               revision_range+".."], ignore_errors=True).strip()
+
+            if options.guess_description and not options.description:
+                options.description = execute(
+                ["git", "log", "--pretty=format:%s%n%n%b", revision_range+".."],
+                ignore_errors=True).strip()
+
+            return self.make_diff(revision_range)
+        else:
+            r1, r2 = revision_range.split(":")
+
+            if options.guess_summary and not options.summary:
+                options.summary = execute(["git", "log", "--pretty=format:%s",
+                           "%s..%s" % (r1, r2)], ignore_errors=True).strip()
+
+            if options.guess_description and not options.description:
+                options.description = execute(["git", "log",
+                   "--pretty=format:%s%n%n%b","%s..%s" % (r1, r2)],
+                   ignore_errors=True).strip()
+
+            return self.make_diff(r1, r2)
 
 
 SCMCLIENTS = (
