We created a TAG for a release version of one of our products (e.g. 4.3.0GA). Then we deployed it in production instances. next day the production instances totally crashed, making themselves absolutely unusable. we quickly release a new version fixing the bug. and put them in production.
Then we updated the our TAG (4.3.0GA) with the bug fixes. (yes, we made a direct commit to the TAG 4.3.0GA)
Then we came to this discussion inside our team:
Proposal A
We made a mistake. TAGs should never be updated. We have to revert the actual bug-fixed 4.3.0GA TAG to its initial state. and then create a new TAG named 4.3.0GASP1 with the bug fixes. Because every released version (even when it last only one day in production) should have a unique TAG in the repository.
Proposal B
Do not modify the actual repository's TAGs. Because if there is a 4.3.0GASP1 version, somebody could checkout by error the 4.3.0GA buggy version. TAGS should only contain non-buggy versions and finally, the buggy version only was in production for one day.
What do you think? Which posture is correct (Proposal A or B)?
UPDATE: We use the Jboss versioning convention by the way.