function mytheme_preprocess_node(array &$variables) {
$node = $variables['node'];
$current_user = \Drupal::currentUser();
$revision_ids = \Drupal::entityTypeManager()
->getStorage('node')
->revisionIds($node);
if (count($revision_ids) > 1) {
$revision_user = $node->getRevisionUser();
$revision_user_output = '';
if ($revision_user) {
$username = $revision_user->getDisplayName();
$uid = $revision_user->id();
if ($current_user->hasPermission('access user profiles')) {
$link = \Drupal\Core\Link::createFromRoute(
$username,
'entity.user.canonical',
['user' => $uid]
)->toRenderable();
$renderer = \Drupal::service('renderer');
$revision_user_output = $renderer->renderPlain($link);
}
else {
$revision_user_output = $username;
}
}
$revision_date = \Drupal::service('date.formatter')->format(
$node->getRevisionCreationTime(),
'short'
);
$variables['revision_info'] = [
'author_rendered' => $revision_user_output,
'date' => $revision_date,
];
}
else {
$variables['revision_info'] = NULL;
}
}
<div class="node__meta">
{{ author_picture }}
<span{{ author_attributes }}>
{{ author_name }}: {{ date }}
{% if revision_info %}
(changed {{ revision_info.author_rendered|raw }}: {{ revision_info.date }})
{% endif %}
</span>
{{ metadata }}
</div>