Picking a correct package version number can be quite complicated. The Ubuntu project documentation has a very long page explaining probably all cases.
The Version: Undoing mistakes section says:
In a very rare case where an upgrade to a new upstream version of a package caused major regression and the only way out is rolling back, the convention is to insert
+reallyfollowed by the actual version number.
Using +really helps undoing a mistake, but what should you do in case you have to undo a second mistake? Imagine you upgraded from 7.80+dfsg1-5 to 7.91+dfsg1-1, but then revert back to 7.80+dfgs1 by using 7.91+dfsg1+really7.80+dfsg1-0ubuntu1. Then you upgrade to 7.91 again using 7.91+dfsg1+really7.91+dfsg1-0ubuntu1. Assume this was a mistake and you have to revert again. You could use 7.91+dfsg1+really7.91+dfsg1+really7.80+dfsg1-0ubuntu1. This is a very long version number and hard to read.
Today I propose to use more than one string besides +really to revert an upstream release version. Let’s use following strings (in alphabetical order):
+actually+definitely+for.sure+really+very.definitely+very.very.definitely+what.i.meant
So in case you have to revert multiple times, you can pick the next string in this list. Example: 7.91+dfsg1-1 → 7.91+dfsg1+actually7.80+dfsg1-0ubuntu1 → 7.91+dfsg1+definitely7.80+dfsg1-0ubuntu1 → 7.91+dfsg1+for.sure7.80+dfsg1-0ubuntu1 → 7.91+dfsg1+really7.80+dfsg1-0ubuntu1 and so on.
Let’s discuss this proposal before submitting a merge request for the Ubuntu project documentation. Which strings would you use and how many do you need? Are 7 strings enough?