Index: view_unpublished.module
===================================================================
--- view_unpublished.module	(revision 222)
+++ view_unpublished.module	(working copy)
@@ -25,12 +25,22 @@ function view_unpublished_perm() {
 /**
  * Implementation of hook_menu_alter().
  *
- * Modifies the path node/nid to use our access callback.
+ * Modifies node access callbacks to use our own.
  */
 function view_unpublished_menu_alter(&$items) {
   $old_access_callback = $items['node/%node']['access callback'];
   $items['node/%node']['access callback'] = '_view_unpublished_node_access';
   $items['node/%node']['access arguments'] = array(1, $old_access_callback);
+  // Also cover revisions.
+  $items['node/%node/revisions']['access callback'] = '_view_unpublished_node_revision_access';
+  $items['node/%node/revisions/%/view']['access callback'] = '_view_unpublished_node_revision_access';
+
+  if (module_exists('diff')) {
+    $items['node/%node/revisions/list']['access callback'] = '_view_unpublished_diff_node_revision_access';
+    $items['node/%node/revisions/view/%/%']['access callback'] = '_view_unpublished_diff_node_revision_access';
+    $items['node/%node/revisions/view/latest']['access callback'] = '_view_unpublished_diff_node_revision_access';
+    $items['node/%node/revisions/diff-inline']['access callback'] = '_view_unpublished_diff_node_revision_access';
+  }
 }
 
 /**
@@ -85,3 +95,29 @@ function view_unpublished_views_query_su
     '***VIEWALLUNPUBLISHED_NODES***' => intval(user_access('view all unpublished content')),
   );
 }
+
+/**
+ * Access callback for node revisions.
+ */
+function _view_unpublished_node_revision_access($node, $op = 'view') {
+  // Only override in if the node is unpublished and the user can view revisions
+  if ($node->status == 0 && user_access('view revisions')) {
+    // Now check to see if the user can view this node in the first place.
+    if (_view_unpublished_node_access($node)) {
+      return TRUE;
+    }
+  }
+
+  // If none of the above conditions were satisfied, then use node_access like normal.
+  return _node_revision_access($node, $op);	
+}
+
+/**
+ * Support for integration of diff module
+ *
+ * See
+ */
+function _view_unpublished_diff_node_revision_access($node, $op = 'view') {
+  $may_revision_this_type = variable_get('enable_revisions_page_'. $node->type, TRUE) || user_access('administer nodes');
+  return $may_revision_this_type && _view_unpublished_node_revision_access($node, $op);
+}
