Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -483,6 +483,7 @@
     'DiffusionCommitHookRejectException' => 'applications/diffusion/exception/DiffusionCommitHookRejectException.php',
     'DiffusionCommitQuery' => 'applications/diffusion/query/DiffusionCommitQuery.php',
     'DiffusionCommitRef' => 'applications/diffusion/data/DiffusionCommitRef.php',
+    'DiffusionCommitRemarkupRule' => 'applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php',
     'DiffusionCommitTagsController' => 'applications/diffusion/controller/DiffusionCommitTagsController.php',
     'DiffusionController' => 'applications/diffusion/controller/DiffusionController.php',
     'DiffusionDiffController' => 'applications/diffusion/controller/DiffusionDiffController.php',
@@ -530,7 +531,6 @@
     'DiffusionPushLogListController' => 'applications/diffusion/controller/DiffusionPushLogListController.php',
     'DiffusionQuery' => 'applications/diffusion/query/DiffusionQuery.php',
     'DiffusionRawDiffQuery' => 'applications/diffusion/query/rawdiff/DiffusionRawDiffQuery.php',
-    'DiffusionRemarkupRule' => 'applications/diffusion/remarkup/DiffusionRemarkupRule.php',
     'DiffusionRenameHistoryQuery' => 'applications/diffusion/query/DiffusionRenameHistoryQuery.php',
     'DiffusionRepositoryController' => 'applications/diffusion/controller/DiffusionRepositoryController.php',
     'DiffusionRepositoryCreateController' => 'applications/diffusion/controller/DiffusionRepositoryCreateController.php',
@@ -551,6 +551,7 @@
     'DiffusionRepositoryNewController' => 'applications/diffusion/controller/DiffusionRepositoryNewController.php',
     'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php',
     'DiffusionRepositoryRef' => 'applications/diffusion/data/DiffusionRepositoryRef.php',
+    'DiffusionRepositoryRemarkupRule' => 'applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php',
     'DiffusionRepositoryTag' => 'applications/diffusion/data/DiffusionRepositoryTag.php',
     'DiffusionRequest' => 'applications/diffusion/request/DiffusionRequest.php',
     'DiffusionResolveUserQuery' => 'applications/diffusion/query/DiffusionResolveUserQuery.php',
@@ -2886,6 +2887,7 @@
     'DiffusionCommitHookRejectException' => 'Exception',
     'DiffusionCommitQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
     'DiffusionCommitRef' => 'Phobject',
+    'DiffusionCommitRemarkupRule' => 'PhabricatorRemarkupRuleObject',
     'DiffusionCommitTagsController' => 'DiffusionController',
     'DiffusionController' => 'PhabricatorController',
     'DiffusionDiffController' => 'DiffusionController',
@@ -2929,7 +2931,6 @@
     ),
     'DiffusionQuery' => 'PhabricatorQuery',
     'DiffusionRawDiffQuery' => 'DiffusionQuery',
-    'DiffusionRemarkupRule' => 'PhabricatorRemarkupRuleObject',
     'DiffusionRepositoryController' => 'DiffusionController',
     'DiffusionRepositoryCreateController' => 'DiffusionRepositoryEditController',
     'DiffusionRepositoryDefaultController' => 'DiffusionController',
@@ -2951,6 +2952,7 @@
       1 => 'PhabricatorApplicationSearchResultsControllerInterface',
     ),
     'DiffusionRepositoryNewController' => 'DiffusionController',
+    'DiffusionRepositoryRemarkupRule' => 'PhabricatorRemarkupRuleObject',
     'DiffusionResolveUserQuery' => 'Phobject',
     'DiffusionSSHGitReceivePackWorkflow' => 'DiffusionSSHGitWorkflow',
     'DiffusionSSHGitUploadPackWorkflow' => 'DiffusionSSHGitWorkflow',
Index: src/applications/diffusion/application/PhabricatorApplicationDiffusion.php
===================================================================
--- src/applications/diffusion/application/PhabricatorApplicationDiffusion.php
+++ src/applications/diffusion/application/PhabricatorApplicationDiffusion.php
@@ -32,7 +32,8 @@
 
   public function getRemarkupRules() {
     return array(
-      new DiffusionRemarkupRule(),
+      new DiffusionRepositoryRemarkupRule(),
+      new DiffusionCommitRemarkupRule(),
     );
   }
 
Index: src/applications/diffusion/query/DiffusionCommitQuery.php
===================================================================
--- src/applications/diffusion/query/DiffusionCommitQuery.php
+++ src/applications/diffusion/query/DiffusionCommitQuery.php
@@ -76,11 +76,13 @@
     return $this->identifierMap;
   }
 
-  protected function loadPage() {
+  protected function willExecute() {
     if ($this->identifierMap === null) {
       $this->identifierMap = array();
     }
+  }
 
+  protected function loadPage() {
     $table = new PhabricatorRepositoryCommit();
     $conn_r = $table->establishConnection('r');
 
Index: src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php
===================================================================
--- src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php
+++ src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class DiffusionRemarkupRule
+final class DiffusionCommitRemarkupRule
   extends PhabricatorRemarkupRuleObject {
 
   protected function getObjectNamePrefix() {
Index: src/applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php
===================================================================
--- /dev/null
+++ src/applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php
@@ -0,0 +1,25 @@
+<?php
+
+final class DiffusionRepositoryRemarkupRule
+  extends PhabricatorRemarkupRuleObject {
+
+  protected function getObjectNamePrefix() {
+    return 'r';
+  }
+
+  protected function getObjectIDPattern() {
+    return '[A-Z]+';
+  }
+
+  protected function loadObjects(array $ids) {
+    $viewer = $this->getEngine()->getConfig('viewer');
+
+    $repositories = id(new PhabricatorRepositoryQuery())
+      ->setViewer($viewer)
+      ->withCallsigns($ids)
+      ->execute();
+
+    return mpull($repositories, null, 'getCallsign');
+  }
+
+}