When you have a node translated into two languages (p.e. English and German), both „versions" can be edited separately. But revisions are created/stored across all language versions and not independently.
This causes a situation like this:
The English editor (uid 1) creates a node and creates 3 revisions of it afterwards by editing the node 3 times.
Now the German editor (uid 2) creates a translation from this node and starts to work on it for several days and creates 5 revisions.
In the meantime the English editor also creates a new revision just to fix a small typo.
The revision table basically looks like this:
nid vid revision_uid
1 1 1
1 2 1
1 3 1
1 4 2
1 5 2
1 6 2
1 7 1 <= The typo fix by the English editor
1 8 2
1 9 2
Now the German editor decides to revert his latest 2 changes and to go back to vid 6.
In this case he not only reverts his changes in the German translation but the typo fix in the English translation as well!
This did not happen in Drupal 7 using core’s content translation!
From my point of view this is a major issue in Drupal 8. Ideally revisions should be treated individually per language. But this will probably cause too massive changes to the API.
Therefor I created a patch that leverages the existing implementation but additionally allows to revert a single language/translation of a node only.
In the example above, the editor now has the choice to revert the node by creating a new revision which is a clone of vid 6 (the current erroneous behavior of drupal 8) or to create a new revision that combines the English values of vid 9 with the German values of vid 6 (the new option introduced by the attached patch).