A tag has a revision associated with it. I thought this was already in the Tag class.
Here, I think we should modify the tag to store an identifier.
Let's use an example :
We start with a blank server, revision = 0, no tag.
op : r1
op : r2
Tag[ t1, r2] : I have created a first tag, which store the current revision, r2
op : r3
op : r4
Tag[t2, r4] : I created a new tag, holding r4
Tag[t3, r4] : another tag, with another name, but holding the same
op : r5 : the current revision is now r5
revert -> now, the revert play !op, and go back to revision r4,
removing the tag t3
revert -> we remove the t3 tag, but as teh current revision has
already been restored to r4, we don't do anything else.
It should work, it's just a matter of adding some extra info in the Tag class.
I will try that.