diff --git a/core/modules/node/config/views.view.content_revisions.yml b/core/modules/node/config/views.view.content_revisions.yml
new file mode 100644
index 0000000..ab84e6f
--- /dev/null
+++ b/core/modules/node/config/views.view.content_revisions.yml
@@ -0,0 +1,198 @@
+api_version: '3.0'
+base_field: vid
+base_table: node_revision
+core: 8.x
+description: ''
+disabled: '0'
+display:
+  default:
+    display_plugin: default
+    id: default
+    display_title: Master
+    position: ''
+    display_options:
+      access:
+        type: perm
+        perm: 'view revisions'
+      cache:
+        type: none
+      query:
+        type: views_query
+      exposed_form:
+        type: basic
+      pager:
+        type: none
+        options:
+          offset: '0'
+      style:
+        type: table
+        options:
+          grouping: {  }
+          row_class: ''
+          default_row_class: '1'
+          row_class_special: '1'
+          override: '1'
+          sticky: '0'
+          summary: ''
+          columns:
+            timestamp: timestamp
+            title: title
+            name: name
+            log: title
+            revert_revision: revert_revision
+            delete_revision: delete_revision
+            dropbutton: dropbutton
+      row:
+        type: fields
+      fields:
+        timestamp:
+          id: timestamp
+          table: node_revision
+          field: timestamp
+          label: ''
+          exclude: '1'
+          date_format: short
+        name:
+          id: name
+          table: users
+          field: name
+          relationship: uid
+          label: ''
+          exclude: '1'
+          format_username: '1'
+        title:
+          id: title
+          table: node_revision
+          field: title
+          label: Revision
+          exclude: '0'
+          alter:
+            alter_text: '1'
+            text: '[timestamp] by [name]'
+          link_to_node_revision: '1'
+        log:
+          id: log
+          table: node_revision
+          field: log
+          label: ''
+          exclude: '0'
+          element_type: p
+          element_class: revision-log
+        revert_revision:
+          id: revert_revision
+          table: node_revision
+          field: revert_revision
+          label: ''
+          exclude: '1'
+          text: revert
+        delete_revision:
+          id: delete_revision
+          table: node_revision
+          field: delete_revision
+          exclude: '1'
+          text: delete
+        dropbutton:
+          id: dropbutton
+          table: views
+          field: dropbutton
+          label: Operations
+          empty: '<em class="placeholder">current revision</em>'
+          fields:
+            revert_revision: revert_revision
+            delete_revision: delete_revision
+            timestamp: '0'
+            title: '0'
+            name: '0'
+          destination: '0'
+      filters:
+        status:
+          value: '1'
+          table: node_revision
+          field: status
+          id: status
+          expose:
+            operator: '0'
+          group: '1'
+      sorts:
+        timestamp:
+          id: timestamp
+          table: node_revision
+          field: timestamp
+          relationship: none
+          group_type: group
+          admin_label: ''
+          order: DESC
+          exposed: '0'
+          expose:
+            label: ''
+          granularity: second
+      title: 'Content revisions'
+      arguments:
+        nid:
+          id: nid
+          table: node_revision
+          field: nid
+          relationship: none
+          group_type: group
+          admin_label: ''
+          default_action: 'not found'
+          exception:
+            value: all
+            title_enable: '0'
+            title: All
+          title_enable: '1'
+          title: 'Revisions for <em class="placeholder">%1</em>'
+          breadcrumb_enable: '0'
+          breadcrumb: ''
+          default_argument_type: node
+          default_argument_options: ''
+          default_argument_skip_url: '0'
+          summary_options:
+            base_path: ''
+            count: '1'
+            items_per_page: '25'
+            override: '0'
+          summary:
+            sort_order: asc
+            number_of_records: '0'
+            format: default_summary
+          specify_validation: '1'
+          validate:
+            type: node
+            fail: 'not found'
+          validate_options:
+            access: '1'
+            access_op: update
+            nid_type: nid
+            types: {  }
+          break_phrase: '0'
+          not: '0'
+      relationships:
+        uid:
+          id: uid
+          table: node_revision
+          field: uid
+          relationship: none
+          group_type: group
+          admin_label: ''
+          label: 'revision user'
+          required: '0'
+  page_1:
+    display_plugin: page
+    id: page_1
+    display_title: Page
+    position: ''
+    display_options:
+      path: node/%/revisions
+      menu:
+        type: tab
+        title: Revisions
+        description: ''
+        name: admin
+        weight: '0'
+        context: '0'
+      enabled: '1'
+human_name: 'Content revisions'
+module: node
+name: content_revisions
+tag: ''
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
index 2ce2abb..548bcdc 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
@@ -72,6 +72,8 @@ function setUp() {
    * Checks node revision related operations.
    */
   function testRevisions() {
+    module_enable(array('views'));
+
     $nodes = $this->nodes;
     $logs = $this->logs;
 
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index a37679c..aa60fc1 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1752,16 +1752,6 @@ function node_menu() {
     'context' => MENU_CONTEXT_INLINE,
     'file' => 'node.pages.inc',
   );
-  $items['node/%node/revisions'] = array(
-    'title' => 'Revisions',
-    'page callback' => 'node_revision_overview',
-    'page arguments' => array(1),
-    'access callback' => '_node_revision_access',
-    'access arguments' => array(1),
-    'weight' => 2,
-    'type' => MENU_LOCAL_TASK,
-    'file' => 'node.pages.inc',
-  );
   $items['node/%node/revisions/%node_revision/view'] = array(
     'title' => 'Revisions',
     'page callback' => 'node_show',
@@ -1848,25 +1838,6 @@ function node_last_changed($nid) {
 }
 
 /**
- * Returns a list of all the existing revision numbers for the node passed in.
- *
- * @param Drupal\node\Node $node
- *   The node entity.
- *
- * @return
- *   An associative array keyed by node revision number.
- */
-function node_revision_list(Node $node) {
-  $revisions = array();
-  $result = db_query('SELECT r.vid, r.title, r.log, r.uid, n.vid AS current_vid, r.timestamp, u.name FROM {node_revision} r LEFT JOIN {node} n ON n.vid = r.vid INNER JOIN {users} u ON u.uid = r.uid WHERE r.nid = :nid ORDER BY r.vid DESC', array(':nid' => $node->nid));
-  foreach ($result as $revision) {
-    $revisions[$revision->vid] = $revision;
-  }
-
-  return $revisions;
-}
-
-/**
  * Implements hook_block_info().
  */
 function node_block_info() {
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index 0a18ec1..ddf397f 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -237,81 +237,6 @@ function node_delete_confirm_submit($form, &$form_state) {
 }
 
 /**
- * Page callback: Generates an overview table of older revisions of a node.
- *
- * @param object $node
- *   A node object.
- *
- * @return array
- *   An array as expected by drupal_render().
- *
- * @see node_menu()
- */
-function node_revision_overview($node) {
-  drupal_set_title(t('Revisions for %title', array('%title' => $node->label())), PASS_THROUGH);
-
-  $header = array(t('Revision'), t('Operations'));
-
-  $revisions = node_revision_list($node);
-
-  $rows = array();
-  $type = $node->type;
-
-  $revert_permission = FALSE;
-  if ((user_access("revert $type revisions") || user_access('revert all revisions') || user_access('administer nodes')) && node_access('update', $node)) {
-    $revert_permission = TRUE;
-  }
-  $delete_permission = FALSE;
-  if ((user_access("delete $type revisions") || user_access('delete all revisions') || user_access('administer nodes')) && node_access('delete', $node)) {
-    $delete_permission = TRUE;
-  }
-  foreach ($revisions as $revision) {
-    $row = array();
-    $type = $node->type;
-    if ($revision->current_vid > 0) {
-      $row[] = array('data' => t('!date by !username', array('!date' => l(format_date($revision->timestamp, 'short'), "node/$node->nid"), '!username' => theme('username', array('account' => $revision))))
-                               . (($revision->log != '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : ''),
-                     'class' => array('revision-current'));
-      $row[] = array('data' => drupal_placeholder(t('current revision')), 'class' => array('revision-current'));
-    }
-    else {
-      $row[] = t('!date by !username', array('!date' => l(format_date($revision->timestamp, 'short'), "node/$node->nid/revisions/$revision->vid/view"), '!username' => theme('username', array('account' => $revision))))
-               . (($revision->log != '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : '');
-      if ($revert_permission) {
-        $links['revert'] = array(
-          'title' => t('revert'),
-          'href' => "node/$node->nid/revisions/$revision->vid/revert",
-        );
-      }
-      if ($delete_permission) {
-        $links['delete'] = array(
-          'title' => t('delete'),
-          'href' => "node/$node->nid/revisions/$revision->vid/delete",
-        );
-      }
-      $row[] = array(
-        'data' => array(
-          '#type' => 'operations',
-          '#links' => $links,
-        ),
-      );
-    }
-    $rows[] = $row;
-  }
-
-  $build['node_revisions_table'] = array(
-    '#theme' => 'table',
-    '#rows' => $rows,
-    '#header' => $header,
-    '#attached' => array (
-      'css' => array(drupal_get_path('module', 'node') . '/node.admin.css'),
-    ),
-  );
-
-  return $build;
-}
-
-/**
  * Page callback: Form constructor for the reversion confirmation form.
  *
  * This form prevents against CSRF attacks.
