For order I've split this issue.

Fago,
I see that the code that actually deletes the revision is in node.module:
function node_revision_delete_confirm_submit

Same goes for the revert:
function node_revision_revert_confirm_submit($form_id, $form_values)

So, actually before it's deleted / reverted the form_alter can catch it, also if it's called pragmatically. If this is correct then this patch is valid.