"Revert to last revision" action
After much debugging this appears to work. This code appears to revert to the most recent revision properly and does not cause a 2nd node save to occur:

/**
 * Implements hook_action_info().
 */
function revert_last_revision_action_info() {
  $action = array(
    'REVERT_LAST_REVISION' =&gt; array(
      'label'        =&gt; t('Revert to Last Revision'),
      'type'         =&gt; 'node',
      'configurable' =&gt; FALSE,
      'triggers'     =&gt; array('any'),
      'behavior'     =&gt; array('view_property'),
    ),
  );
  return $action;
}

/**
 * Action function for REVERT_LAST_REVISION.
 */
function REVERT_LAST_REVISION(&amp;$entity, $context = array()) {
  $revision_list = node_revision_list($entity);
  unset($revision_list[$entity-&gt;vid]);
  if (count($revision_list) &gt; 0) {
    $last_revision = max(array_keys($revision_list));
    $entity = entity_revision_load('node', $last_revision);
    $entity-&gt;revision = TRUE;
    $entity-&gt;log = "Reverted via bulk operation action.";
    entity_save('node', $entity);
  }
}


Does anyone know what is causing the final node save in ViewsBulkOperationsAction::execute to not fire? I can't tell if it's because of the action info behaviors not set as: save, pre-save, or changes_property values. Or perhaps it's the usage of entity_save here  instead of a node_save ...

I've debugged this with a few nodes using Batch and single nodes.